1. 程式人生 > >?. 叫做null-conditional operator(空值的條件訪問操作符)

?. 叫做null-conditional operator(空值的條件訪問操作符)

?.“空值的條件訪問操作符”

?. 叫做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)