以下代码会导致InvalidCastException
。
object x = (short) 1;
int y = (int) x;
我知道我可以首先将x
投射到short
然后投射到int
,尽管这不是一个选项,因为盒装值的类型未知(但它绝对小于int
)。
如何在拆箱类型时解决异常,该类型大于盒装类型?
修改
我使用dynamic
类型(具有所有性能影响)解决了我的问题
答案 0 :(得分:8)
你可以only unbox an object to its exact type。
相反,您应该调用Convert.ToInt32()
,这将适用于任何数字类型。