为什么我不能使用三元运算符将null分配给十进制?

我不明白为什么这行不通

decimal? compRetAmount = !string.IsNullOrEmpty(txtLineCompRetAmt.Text) 
    ? decimal.Parse(txtLineCompRetAmt.Text.Replace(",","")) 
    : null;
最佳答案
因为null是对象类型(实际上是无类型的),所以您需要将其分配给有类型的对象.

这应该工作:

decimal? compRetAmount = !string.IsNullOrEmpty(txtLineCompRetAmt.Text) 
         ? decimal.Parse(txtLineCompRetAmt.Text.Replace(",","")) 
         : (decimal?)null;

还是更好一点:

decimal? compRetAmount = !string.IsNullOrEmpty(txtLineCompRetAmt.Text) 
         ? decimal.Parse(txtLineCompRetAmt.Text.Replace(",","")) 
         : default(decimal?);

这是default关键字的MSDN链接.

转载注明原文:为什么我不能使用三元运算符将null分配给十进制? - 代码日志