4

null許容の「decimal?d」があり、dをnull許容でないeに割り当てたい場合、適切な方法は何ですか?

4

5 に答える 5

16
decimal e = d ?? 0.0;
于 2009-05-01T03:14:11.393 に答える
10
decimal e;
if(d.HasValue) 
{
    e = d.Value;
}
于 2009-05-01T03:04:10.327 に答える
2

可能かどうか、つまりnull許容のdに値があるかどうかを判断する必要があります。

if (d.HasValue) { e = d.Value; } else { /* now what */ }

もう1つの興味深いケースは、3項を使用してnull許容型に割り当てたい場合によく発生します。この場合、両方のブランチが同じタイプになるようにキャストする必要があります。

d = foo ? 45 : (int?)null;

nullから(int?)の場合に注意して、両方のブランチが同じタイプになるようにします。

于 2009-05-01T03:03:59.937 に答える
1
decimal e;

if (d.HasValue)
{
    e = d.Value;
}
于 2009-05-01T03:02:14.060 に答える
1

私は通常このようなもので行きます:

decimal e = d.HasValue ? d.Value : decimal.Zero;

ここでの理由は、私は三項演算のファンであり、通常、処理しTryParse()ているタイプの失敗を認識した場合に得られる値を割り当てるためです。それdecimalはそうなるでしょうdecimal.Zerointそれもそうなるでしょう0

于 2009-05-01T03:20:14.233 に答える