Палец вверх 1
Перевод
Перевод

.Net - Преобразование или преобразование байта в штучной упаковке? или int? к инт?

Если у меня есть ссылка на object который ссылается на byte? short? или int? , есть ли способ безоговорочно привести или преобразовать ссылку на этот объект в int? без написания отдельного кода для каждого случая?

Например:

byte? aByte = 42; // .. or aByte = null
object anObject = aByte;
//...
var anInt = (int?)anObject //As expected, doesn't work
c# .net int casting nullable
задан Boris B. 26 окт. 2011 г., 23:55:11
источник

2 ответа

Решение 9
Перевод
Перевод

Я бы использовал Convert.ToInt32(object) :

object o = ...; // Boxing...
int? x = o == null ? (int?) null : Convert.ToInt32(o);

Обратите внимание, что когда вы ставите int? short? или byte? , вы всегда получаете пустую ссылку или штучное ненулевое значение - такого понятия, как «коробочное значение», не существует.

Convert.ToInt32 будет работать для всех упомянутых вами штучных типов - хотя он также будет работать для таких вещей, как строка «42» и т. Д. Это проблема?

ответ дан Jon Skeet 26 окт. 2011 г., 23:59:08
источник
Палец вверх 1
Перевод
Перевод
var i = (anObject as IConvertible).ToInt32(null);
ответ дан Kirill Polishchuk 27 окт. 2011 г., 0:00:57
источник