首页 > 编程笔记 > C#笔记 阅读:11

C# ??==空合并运算符的用法(附带实例)

C# 在 C# 8 以后新增了“??=”复合运算符,这个符号称为 null-coalescing assignment,中文可以解释为空合并赋值。

假设有一个程序片段如下:
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

相关文章