2009-05-01 57 views

回答

16
decimal e = d ?? 0.0; 
1
decimal e; 

if (d.HasValue) 
{ 
    e = d.Value; 
} 
+1

當d爲空時應該採用什麼值? – 2009-05-01 03:06:42

+2

我可以說-1可能'System.InvalidOperationException',但我不會。 – Phaedrus 2009-05-01 03:09:29

+1

這個答案是現在,但只有複製Phaedrus的答案後。 – 2009-05-01 03:13:29

2

您需要確定您是否可以,即是否可爲空的d有值。

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

您要使用的三元,在這種情況下,你要投,使兩個分支有相同的類型分配給一個可空另一個有趣的案例出現相當普遍。

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

請注意大小寫爲(int?),以便兩個分支都具有相同的類型。

10
decimal e; 
if(d.HasValue) 
{ 
    e = d.Value; 
} 
1

我通常像這樣的東西去:

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

這裏的原因是,我是三元操作的粉絲,我通常會指派,如果我有我會得到價值爲我正在處理的類型提供了一個失敗的TryParse()。對於decimal將是decimal.Zero,對於int也將是0