如果我有一个可空的 "decimal? d",并且我想将d赋值给非空的e,正确的方法是什么?
decimal e = d ?? 0.0;
decimal e;
if(d.HasValue)
{
e = d.Value;
}
您需要确定是否可以,即可空的d是否有值。
if (d.HasValue) { e = d.Value; } else { /* now what */ }
还有一个常见的有趣案例,涉及到使用三元运算符给可空类型赋值时,你需要进行强制类型转换,以使两个分支具有相同的类型。
d = foo ? 45 : (int?)null;
decimal e;
if (d.HasValue)
{
e = d.Value;
}
我通常会选择这样的方式:
decimal e = d.HasValue ? d.Value : decimal.Zero;
TryParse()
失败。对于decimal
,它将是decimal.Zero
,对于int
,它也将是0
。