双?小数?转变

时间:2010-11-20 20:37:43

标签: c# nullable

为什么在此代码片段之后:

 double? d = 123.4;
 decimal? dec = (decimal?)d; //dec is null

是dec的值为null吗?

5 个答案:

答案 0 :(得分:4)

我已经在.NET 2.0和.NET 4.0上进行了测试,我得到了dec 123.4,正如预期的那样。你确定你的断点可能不太高吗?

答案 1 :(得分:2)

dec不为null,为123.4

答案 2 :(得分:1)

我知道这会指出同样的事情。你的代码按预期给了我123,4。它工作正常。

我可以说试试这个:)但结果是一样的:123,4

double? d = 123.4;
 decimal? dec = (decimal?)d.Value;

答案 3 :(得分:0)

我最好的猜测是,在强制转换中调用的隐式转换失败,将dec留下null值,而不是你期望的截断/舍入值。

答案 4 :(得分:0)

它不是空的。您必须在其他地方出错。