C# 取消装箱到较大值类型

C# 取消装箱到较大值类型,c#,.net,boxing,unboxing,C#,.net,Boxing,Unboxing,以下代码导致出现InvalidCastException object x = (short) 1; int y = (int) x; 我知道我可以先将x转换为short,然后转换为int,尽管这不是一个选项,因为装箱值的类型未知(但它肯定小于int) 当取消装箱到比装箱类型大的类型时,如何处理异常 编辑: 我通过使用动态类型(包括所有性能影响)解决了我的问题 相反,您应该调用Convert.ToInt32(),它可以处理任何数字类型

以下代码导致出现
InvalidCastException

  object x = (short) 1;
  int y = (int) x;
我知道我可以先将
x
转换为
short
,然后转换为
int
,尽管这不是一个选项,因为装箱值的类型未知(但它肯定小于
int

当取消装箱到比装箱类型大的类型时,如何处理异常

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

相反,您应该调用
Convert.ToInt32()
,它可以处理任何数字类型