如果我有引用object
,byte?
或short?
的{{1}}引用,是否有办法无条件地将该对象引用转换为int?没有为每个案例编写单独的代码?
例如:
int?
答案 0 :(得分:9)
object o = ...; // Boxing...
int? x = o == null ? (int?) null : Convert.ToInt32(o);
请注意,当您点击int?
,short?
或byte?
时,您总是会得到一个空引用或一个盒装的非可空值 - 这里没有“盒装可空值“就是这样。
Convert.ToInt32
适用于您提到的所有盒装类型 - 虽然它也可用于字符串“42”等等。这是一个问题吗?
答案 1 :(得分:1)
var i = (anObject as IConvertible).ToInt32(null);