.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

.Net -强制转换或转换盒装字节?,短吗?或int ?int

我会使用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);