c# ??(null合并运算符) 和 ??=(空合并赋值运算符)

??(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;

官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值