2012-09-28 123 views
4

我有以下代碼:空 - 結合運營商

decimal? a = 2m; 
decimal? b = 2m; 
decimal c = a ?? 1m * b ?? 1m; 

由於兩個ab已經被填入,我期待c給我的結果。

但是,結果我得到的是,在這種情況下b取爲代替。

有誰知道背後的原因是什麼?爲什麼你的2

回答

4

表達工作原理:

decimal c = a ?? (1m * b) ?? 1m; 

由於a有一個值,你得到的。

5

組,如果你想獲得4

decimal c = (a ?? 1m) * (b ?? 1m); 

當前的語法的值值條件爲

decimal c = a ?? (1m * b ?? 1m); 

和原因進行評估(爲對於a

3
decimal c = a ?? 1m * b ?? 1m; 

等於:

if (a != null) 
    c = a 
else 
    ... 

在你的情況a不爲空並且具有2的值,因此這就是結果。