?. 叫做null-conditional operator(空值的條件訪問操作符)
阿新 • • 發佈:2018-11-15
?.“空值的條件訪問操作符”
?. 叫做null-conditional operator(空值的條件訪問操作符),是C#6新增的語言特色。
其實,“空值的條件訪問操作符”還是很受歡迎的。它讓C#的表達力更強。相同的表達,沒有用?.操作符,要多好幾條語句。而且,?.操作符是C#語言特色,有VisualStudio2015或以上,就可以編譯使用。它跟DotNet執行版本沒有關係,DotNet4可以用它,DotNet2等也可以用它。
// 以下程式碼不是工業級的做法,因為“檢查空值”,和“進行呼叫”是兩個動作。不是執行緒安全的。
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("ErrorTimes"));
// ?.操作符號,實現了類似程式碼(執行緒安全版本):
var localCopy = PropertyChanged;
if (localCopy != null)
{
localCopy(this, new PropertyChangedEventArgs("ErrorTimes"));
}
很有意思的是在我的VisualStudio2015下,如果你寫上述執行緒安全版本。VisualStudio將建議你換成?.的方式:
(IDE1005 delegate invocation can be simplified)