空短路
在访问可为空类型和引用类型时,在索引前或点前面加一个?可以形成空短路表达式。
如果值为null,则不会对后续内容进行访问。并且返回null。
如果表达式最后的结果为值类型时,那么空短路表达式会把结果改为可空值类型。
空短路可以嵌套多个,但是如果最后的结果是void,则不能用来赋值。
空合并
由于null的特殊性,为null专门做了一种运算符,称为空合并运算符。
两个问号连用以表示值为null时使用右侧的值。其原理与三目运算符类型。
不同的是,空合并运算可以使用复合运算。
string s = null;
string s1 = s ?? "hello";
int i = s?.Length ?? 0;
//上面等效于
s1 = s == null ? "hello" : s;
i = s?.Length == null ? 0 : s.Length;
//复合运算
s ??= "hello";