??(null合并运算符)
int? y;
y = y ?? 10;
如果左操作数的值不为 null,则 null 合并运算符 ?? 返回该值;否则,它会计算右操作数并返回其结果。 如果左操作数的计算结果为非 null,则 ?? 运算符不会计算其右操作数。
// 可以为空
Nullable<int> x = null;
x = 100;
// 100
Console.WriteLine(x);
// True
Console.WriteLine(x.HasValue);
/*
* Nullable<int> x = null;
* 写法等同于
* int? x = null;
*/
// ?? null合并操作符
int? y = null;
// 如果y为null, 则返回10
y = y ?? 10;
// 10
Console.WriteLine(y);
??=(空合并赋值运算符)
C# 8.0 及更高版本中可使用空合并赋值运算符 ??=,该运算符仅在左侧操作数的求值结果为 null 时,才将其右侧操作数的值赋值给左操作数。 如果左操作数的计算结果为非 null,则 ??= 运算符不会计算其右操作数。
if (variable is null)
{
variable = expression;
}
替换为以下代码:
variable ??= expression;