C#中的空接合操作符(??)和null条件操作符(?.)

空接合操作符(null coalescing operator) ?? 能简单地表示“如果这个值为空,就使用另一个值”。

其形式如下:expression1 ?? expression2

??操作符支持短路求值。如果expression1不为null, 就返回expression1的值, 不对另一个表达式求值。如果expression1求值null,就返回expression2的值。 和条件操作符不同,空接合操作符是二元操作符。

举例如下:

string firstName = null;
string fullName = firstName ?? "Jack";
Console.WriteLine(fullName);

如果firstName为null,就用空接合操作符将fullName设为"Jack",如果firstName不为null,fullName将获得firstName的值。

空结合操作符能完美地“链接”。例如,对于表达式x ?? y ?? z,如果x不为null将返回x;否则,如果y不为null将返回y;否则返回z。也就是说,从左向右选出第一个非空表达式。如果之前所有表达式都为空,就选择最后一个表达式。

空结合操作符是C#2.0和可空值类型一起引入的,它的操作数既可以是可空值类型,也可以是引用类型。


null条件操作符

在调用值为null的方法时,运行时都会抛出一个System.NullReferenceException的异常,通常以此表明程序逻辑上存在错误。考虑到在调用成员之要前进行null值检查这一模式的频率很高,C# 6.0引入了一种更为简化的null条件操作符( null-conditionoperator)  ?.

举例如下,这是两部分效果一模一样的代码:


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值