.Net -强制转换或转换盒装字节?,短吗?或int ?int
本文关键字:int 转换 短吗 字节 Net 盒装 | 更新日期: 2023-09-27 18:12:34
如果我有一个引用byte?
, short?
或int?
的object
引用,是否有一种方法无条件地强制转换或将该对象引用转换为int?不为每种情况编写单独的代码?
byte? aByte = 42; // .. or aByte = null
object anObject = aByte;
//...
var anInt = (int?)anObject //As expected, doesn't work
我会使用Convert.ToInt32(object)
:
object o = ...; // Boxing...
int? x = o == null ? (int?) null : Convert.ToInt32(o);
请注意,当您将int?
, short?
或byte?
框起来时,您总是以空引用或框起来的非空值结束-没有"框起来的可空值"这样的东西。
Convert.ToInt32
将适用于您提到的所有盒装类型-尽管它也将适用于字符串"42"等。这是个问题吗?
var i = (anObject as IConvertible).ToInt32(null);