C# 将null分配给可为null的decimal类型时引发Invalidcastexception

C# 将null分配给可为null的decimal类型时引发Invalidcastexception,c#,C#,我把它放回这里,因为我不是在做梦 症状:我无法为decimal?类型分配空值?。分配null会引发异常 decimal? value = (decimal?) null; 这次我添加了一张图片作为证据,因为显然其他人不相信我的观点 问题依然存在。这是完整的代码,我没有隐藏任何东西。我重新编译、重新加载并重新启动。我也希望这能奏效。但事实并非如此 有没有人经历过类似的情况?清理您的解决方案,并确保您在调试模式下调试应用程序,或者从当前版本中获得一些调试符号。您正在显示的代码没有引发异常,但是您

我把它放回这里,因为我不是在做梦

症状:我无法为decimal?类型分配空值?。分配null会引发异常

decimal? value = (decimal?) null;
这次我添加了一张图片作为证据,因为显然其他人不相信我的观点

问题依然存在。这是完整的代码,我没有隐藏任何东西。我重新编译、重新加载并重新启动。我也希望这能奏效。但事实并非如此


有没有人经历过类似的情况?

清理您的解决方案,并确保您在调试模式下调试应用程序,或者从当前版本中获得一些调试符号。您正在显示的代码没有引发异常,但是您没有显示的其他代码引发了此异常。对于原型应用程序,在最新的Visual Studio中,您正在显示的示例代码运行良好:


如您所见,不需要使用null的
(十进制?
强制转换,因此您可以删除它并重新编译应用程序。

我相信这是正确的。尝试将其类型转换为默认值(十进制)。无需添加该类型转换。您可以指定null或值;最有可能的是,VS在异常位置上向您撒谎,这是基于过时的调试符号(或者JIT过度优化了不可调和的东西)。尝试重新构建东西,或者在周围的行中查找更可能出现此问题的候选对象时失败。然而,在任何版本的.NET Framework上,此分配都不会导致异常,除非出现严重的JIT错误。消除不可能,不管剩下什么,不管多么不可能,都必须是真相。如有必要,请使用反编译器检查IL,以查看实际运行的内容。即使在您单步执行代码时,VS也只能根据源代码和调试符号告诉您发生了什么;这些代码通常与实际执行的代码相匹配,但是VS无法验证这一点。@all Jeroen在最后是正确的。我真的在撒谎。我不知道为什么,因为我重建了解决方案。我之前和之后都把这行注释掉了,问题就解决了。谢谢大家!!