为什么(int)(object)10m会引发“指定的转换无效”异常?
为什么此显式强制转换会引发Specified cast is not valid.
异常?
decimal d = 10m;object o = d;
int x = (int)o;
但这有效:
int x = (int)(decimal)o;
回答:
装箱的值只能拆箱到完全相同类型的变量。这种看似奇怪的限制是非常重要的速度优化,它使.NET
1.x在使用泛型之前就变得可行。您可以在此答案中了解更多信息。
您不想跳过多个转换箍,简单的值类型实现IConvertible接口。使用Convert类调用的方法:
object o = 12m; int ix = Convert.ToInt32(o);
以上是 为什么(int)(object)10m会引发“指定的转换无效”异常? 的全部内容, 来源链接: utcz.com/qa/403561.html