前言

若您一直追隨 C# 語言新版本,對於聯合運算子 ??  應該該不陌生。在 C# 8.0 也不讓人失望的推出新的聯合指派運算子 ??= ,讓 C# 開發人員有簡短且容易理解的語法可以使用。本篇文章將以範例簡單說明 null coalescing assignment,若有錯誤或任何建議,請各位先進不吝提出,謝謝。



介紹

在介紹 ??= 運算子之前,我們先回顧一下 ?? 運算子:以下列的程式 x ?? -1 (第 2 行) 為例,若左邊 x 不為 null,則回 x 值;若 x 為 null,則回傳 -1。
int? x = null;
int y = x ?? -1;
Console.WriteLine(y);  // 列印出: -1

透過這個範例,我們可以理解 ?? 運算子,若左邊變數不為 null,則回傳左邊變數;若左邊變數數值為 null,則回傳右邊數值。



而新的 ??= 運算子,以下列程式  a ??= 0 (第 4 行) 為例,若左邊的 a 為 null,則會指派 a 數值為 0 (也就是 a = 0);若左邊 a 不為 null,則不會指派數值。
List numbers = null;
int? a = null;

numbers.Add(a ??= 0);
Console.WriteLine(a);  // 列印出: 0

透過這個範例,我們可以理解 ??= 運算子,若左邊變數不為 null,則不做任何事;若左邊變數為 null ,則 assign 右邊數值給左邊變數。


另一種比較好理解的方式如下圖, ??= 運算子所做的事情與左邊的程式碼相同。透過 ??= 運算子可以讓程式更簡短易用。

參考資料