取消装箱到较大的值类型

thu*_*eys 2 .net c# boxing unboxing

以下代码导致InvalidCastException.

  object x = (short) 1;
  int y = (int) x;
Run Code Online (Sandbox Code Playgroud)

我知道我可以x先进行a short然后进入a int,虽然这不是一个选项,因为盒装值的类型是未知的(但它确实小于a int).

如果拆箱到比盒装类型更大的类型,我该如何处理异常?

编辑: 我通过使用dynamic类型解决了我的问题(具有所有性能影响)

SLa*_*aks 8

只能将对象取消装箱到其确切类型.

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