转换小数?加倍?

Cam*_*nez 14 c# nullable

我想知道从一个可空类型转换为另一个"兼容"可空类型的最佳方式(在更安全和简洁的意义上)是什么.

具体来说,从十进制转换?加倍?可以使用:

public double? ConvertToNullableDouble(decimal? source)
{
    return source.HasValue ? Convert.ToDouble(source) : (double?) null;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?也许利用标准转换?

Avn*_*tan 27

为胜利而建造的演员阵容!刚刚在VS2012 VS2010中进行了测试:

 decimal? numberDecimal = new Decimal(5); 
 decimal? nullDecimal = null;
 double? numberDouble = (double?)numberDecimal; // = 5.0
 double? nullDouble = (double?)nullDecimal;     // = null
Run Code Online (Sandbox Code Playgroud)

只使用显式强制转换会将null转换为null,并将内部十进制值转换为double.成功!

  • 事实上,涉及非可空值类型源和目标的*所有*转换可能被"提升为可空". (2认同)