让人奇怪的是,周五我在我公司的项目工作,我发现了一些“坏”的代码或好奇码。我说,我不相信微软框架的错误。
我找到:
double? euros = null;
double test = Convert.ToDouble(euros);
测试的这个结果是0.0,而不是异常错误。
我很惊讶,因为我以为会有某种异常。
有人能告诉我它为什么会发生?
因为这是记录的行为:
无论是Convert.ToDouble(Object)
或Convert.ToDouble(Double)
,文档状态相当清楚:
(主管返回值)
双精度浮点数,它等效于值,或零,如果值为空。
与往常一样,如果现实不匹配的期望,你应该做的第一件事就是检查你的期望是否符合记录的行为。
它可能有一个真正的原因,它的行为的方式。
我不认为这是一个很好的理由,它的行为是那样
这可能是有效的意见,但如果框架的设计者真的以为回零是一个不理想的结果,他们应该做任何他们认为最好的。
显然,一旦行为在.NET中定义的,它是不能改变的更高版本 - 但是这并不等于说它必须的行为方式VB6相同。
它是所有关于POI方法qazxsw如何qazxsw POI;
Convert.ToDouble(object)
正如你所看到的,它返回implemented如果public static double ToDouble(object value)
{
return value == null? 0: ((IConvertible)value).ToDouble(null);
}
是0
。
此外value
的;
返回值
双精度浮点数,它等效于值,或零,如果值为空。