19
在C#,如果我寫與空類型+ =操作符在C#
int? x = null;
x += x ?? 1
我期望這是等效於:
int? x = null;
x = x + x ?? 1
因而在第一示例中,x
將包含1
,如第二個例子中所示。但它不,它包含null。未分配時,+ =運算符似乎不適用於可空類型。爲什麼會這樣呢?
編輯:正如指出的那樣,這是因爲null + 1 = null
和運算符的優先級。在我的防守,我覺得這條線在MSDN是模糊的!:
預定義的一元和二元運營商和用戶定義的任何 運營商存在的值類型也可以通過可空類型 使用。如果[或 的任一個操作數爲空,則這些運算符產生空值;否則,操作員使用所包含的值來計算結果 。
+1啊,運算符優先級,我的古老的敵人。你再次擊中! – JDB
不是'??'優先於'+'嗎? (@ Servy的回答) –
@AustinSalonen Nope。 http://msdn.microsoft.com/en-us/library/6a71f45d.aspx –