1. 如果左操作數的值不為 null,則 null 合並運算符 ?? 返回該值;否則,它會計算右操作數並返回其結果。 如果左操作數的計算結果為非 null,則 ?? 運算符不會計算其右操作數。
2. C#8.0 及更高版本中可使用空合並賦值運算符 ??=,該運算符僅在左側操作數的求值結果為 null 時,才將其右側操作數的值賦值給左操作數。 如果左操作數的計算結果為非 null,則 ??= 運算符不會計算其右操作數。
List<int> numbers = null;
int? a = null;
(numbers ??= new List<int>()).Add(5);
Console.WriteLine(string.Join(" ", numbers)); // output: 5
numbers.Add(a ??= 0);
Console.WriteLine(string.Join(" ", numbers)); // output: 5 0
Console.WriteLine(a); // output: 0