<分区>
为什么会抛出 InvalidCastException?有人可以向我描述这种行为吗?
object zero = 0;
decimal? dec = (decimal?)zero;
<分区>
为什么会抛出 InvalidCastException?有人可以向我描述这种行为吗?
object zero = 0;
decimal? dec = (decimal?)zero;
最佳答案
装箱的 int
只能拆箱为 int
。然而,这是合法的:
object zero = 0;
decimal? dec = (decimal?)(int)zero;
参见 MSDN或 ECMA 334 C# 规范了解详情。这里的关键是:
拆箱是从类型对象到值类型或从接口(interface)类型到实现接口(interface)的值类型的显式转换。拆箱操作包括:
编辑:这个链接article值得退出评论。谢谢罗伯·肯尼迪!
关于c# - 为什么我不能将 boxed int 转换为可为 null 的 decimal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1103935/