C#中的?? 和 ??= 運算符


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

3. ??= 運算符的左操作數必須是變量、屬性或索引器元素。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM