取消装箱到较大的值类型

时间:2012-11-21 23:24:40

标签: c# .net boxing unboxing

以下代码会导致InvalidCastException

  object x = (short) 1;
  int y = (int) x;

我知道我可以首先将x投射到short然后投射到int,尽管这不是一个选项,因为盒装值的类型未知(但它绝对小于int)。

如何在拆箱类型时解决异常,该类型大于盒装类型?

修改 我使用dynamic类型(具有所有性能影响)解决了我的问题

1 个答案:

答案 0 :(得分:8)

你可以only unbox an object to its exact type

相反,您应该调用Convert.ToInt32(),这将适用于任何数字类型。