?
在以下C#代碼中指示了什麼?方法調用時的問號語法
var handler = CallBack;
handler?.Invoke();
我已閱讀,你可以使用一個?
型前表明它是一個可空類型。這是做同樣的事情嗎?
?
在以下C#代碼中指示了什麼?方法調用時的問號語法
var handler = CallBack;
handler?.Invoke();
我已閱讀,你可以使用一個?
型前表明它是一個可空類型。這是做同樣的事情嗎?
這是使用null conditional operator
表明該代碼不會拋出NullReferenceException
異常,如果handler
爲null C#6碼:
Delegate handler = null;
handler?.Invoke();
這可以避免你在寫null檢查,你將不得不在以前的版本做的C#語言:
Delegate handler = null;
if (handler != null)
{
handler.Invoke();
}
爲什麼迴應這個,當它是如此明確的重複? –
@Lynn OP問:「在下面的c#代碼中指出了什麼?」這個問題的答案是「這是一個更深的空值檢查方法」嗎?這不是(海事組織)的好玩兒。恰好是對一個老問題的一個可能的答案。 –
@GrantWinney我會爭辯說,當有人從Google來到這個問題時,他們會看到指向另一個問題的路標。然後,他們會讀到以前沒有簡明的方式來做空條件檢查,但現在有...並且他們將會有一個「啊哈!」各種各樣的時刻。 –
這是安全導航操作符,在C#6中是新的。在SO上必須有重複的地方。 – senshin
不,這與聲明可爲空的類型不同。你看到的是C#6語法,稱爲'null條件運算符' – Jonesopolis
這裏是[文檔](https://msdn.microsoft.com/en-us/library/dn986595.aspx) – juharr