C# ??==空合并运算符的用法(附带实例)
C# 在 C# 8 以后新增了“??=”复合运算符,这个符号称为 null-coalescing assignment,中文可以解释为空合并赋值。
假设有一个程序片段如下:
【实例 1】认识“??=”运算符,如果 x 或 y 是 null,则该值是 0。
其实依据复合运算符的概念,可以用下列公式表达“x ??=0”:
如果将上述公式改为设定给变量 z,可以得到下列公式:
【实例 2】“??=”运算符的应用。
假设有一个程序片段如下:
x ??= 0;那么上述程序片段可以解释为如果 x 是 null,则设定 x 等于 0。
【实例 1】认识“??=”运算符,如果 x 或 y 是 null,则该值是 0。
int? x = null; int? y = 5; Console.WriteLine($"x = {x ??= 0}"); Console.WriteLine($"x = {x}"); Console.WriteLine($"y = {y ??= 0}"); Console.WriteLine($"y = {y}");执行结果为:
x = 0
x = 0
y = 5
y = 5
其实依据复合运算符的概念,可以用下列公式表达“x ??=0”:
x = x ?? 0;
如果将上述公式改为设定给变量 z,可以得到下列公式:
z = x ?? 0;这个公式可以解释为,如果 x 是 null 则 z 是 0,否则 z 是 x 的原值,对上述公式而言 x 值将不会更改。
【实例 2】“??=”运算符的应用。
int? x = null; int? y = 5; int? z1, z2; z1 = x ?? 0; Console.WriteLine($"x = {x}"); Console.WriteLine($"z1 = {z1}"); z2 = y ?? 0; Console.WriteLine($"y = {y}"); Console.WriteLine($"z2 = {z2}");执行结果为:
x =
z1 = 0
y = 5
z2 = 5