空接合操作符(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) ?. 。
举例如下,这是两部分效果一模一样的代码: