为什么会抛出InvalidCastException异常?有人能描述一下这种行为吗?
object zero = 0;
decimal? dec = (decimal?)zero;
看这篇文章 http://msdn.microsoft.com/en-us/magazine/cc301569.aspx
具体来说 "公共语言运行时首先确保引用类型变量不为空,并且它引用的是所需值类型的装箱值对象。如果任一测试失败,则会生成一个InvalidCastException异常。"
我认为你在那个值的对象上出了问题。我认为将其转换为int是有效的,因为0字面量将转换为int,然后int转换为decimal。
如果你这样做,它就能工作。
decimal? test=0;
object zero = test;
decimal? dec = (decimal?)zero;
但我认为你片段中的“0”不是“十进制(decimal)”类型。
我还不确定,因为这会得到相同的异常。
int test=0;
object zero = test;
decimal? dec = (decimal?)zero;