一開始看到同事們寫? ?? 想說只是三元表達式 有不一樣嗎
但後來才弄懂怎麼一回事
條件運算子 ?: (也稱為三元條件運算子) 會評估布林運算式,
並且根據布林運算式評估為 true 或 false,傳回兩個運算式其中之一的結果
意思就是:如果條件為真 ? 則為 X : 否則為 Y
範例:
string str1 = (str2 != null) ? str2 : string.empty()";
//翻譯: 若str2不為null(空值)就顯示str2否則就顯示空字串
C# 中的這個運算子 "??" 主要用途是用來檢查變數的值是不是為 null
範例:
string str1 = str2 ?? string.empty();
//翻譯:若str2不為null(空值)就顯示str2否則就顯示空字串
有沒有發現!是一樣意思 但是看起來簡潔多了對吧~~
然後用到?們的原因主要是在有些時候,嘗試將「可為 null 的型別」指派給「不可為 null 的型別」時,將會產生編譯時期錯誤。這時使用 ?? 運算子就非常方便
參考來源:
發現 C# 中有一個特殊的運算子 "??"
C# Operator 特殊的運算子 ?: 、??和?.