C#提供了三个简化null处理的运算符,分别是null合并运算符(??)、null合并赋值运算符(??=)、null条件运算符(?.)
我们分别简单讲解下这三种运算符的用法:
1.null合并运算符(??)
这个符号意思是“左边操作数不是null,则结果是操作数,否则是结果是右边的值”,举个例子:
string s1= null;
string s2= s1 ?? "default";//结果s2的值就是“default”
如果s1不为null,那么s1就会赋值给s2,并且右侧的表达式也不会被计算到。
除此之外,null合并运算符同样适用可空值类型:
int? a = null;
int b = a ?? -1;
Console.WriteLine(b); // output: -1
2.null合并赋值运算符(??=)
特别注意, C# 8.0 及更高版本中才可使用空合并赋值运算符 ??=, 该运算符仅在左侧操作数的求值结果为 null 时,才将其右侧操作数的值赋值给左操作数。 如果左操 作数的计算结果为非 null,则 ??= 运算符不会计算其右操作数。例如:
if (variable == null)
{
variable = expression;
}
在C#8.0之前,可以替换为:variable = variable ?? expression;
在C#8.0之后,可以替换为:variable ??= expression;
3.null条件运算符(?.)
null条件运算符简单来说,左边操作符不为null的时候和 . 调用作用是一样的,为null时则不进行后面运算直接返回null,而.调用则会抛出异常
另外关于?还有几种常见的用法,简单来说下:
4.可空类型修饰符<?>
引用类型能用null来表示一个表示一个不存在的值,但是值类型不能。例如:
string s1 = null;
int i = null;//编译就会报错
此时用 int? i = null;就可以了
5.三元运算符表达式(? :)
例如:x?y:z 表示如果表达式x为true,则返回y;如果x为false,则返回z,是省略if{}else{}的简单形式。
,Copyright © 2008-2022 秒下下载站
m.down10s.com .All Rights Reserved