.Net - 转换或转换盒装字节?,简称?还是int?到int?

Bor*_* B. 1 .net c# int casting nullable

如果我有一个object引用a 的引用byte?,short?或者int?有没有办法无条件地将该对象引用转换为int?没有为每个案例编写单独的代码?

例如:

byte? aByte = 42; // .. or aByte = null
object anObject = aByte;
//...
var anInt = (int?)anObject //As expected, doesn't work
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

我用的是Convert.ToInt32(object):

object o = ...; // Boxing...
int? x = o == null ? (int?) null : Convert.ToInt32(o);
Run Code Online (Sandbox Code Playgroud)

请注意,当你框中int?,short?或者byte?,你总是有一个空引用或盒装不可为空值结束了-有一个"盒装空值"本身没有这样的事.

Convert.ToInt32将适用于你提到的所有盒装类型 - 虽然它适用于字符串"42"等等.这是一个问题吗?