下面四种问号操作符的使用功能仅限于C#6.0
1、三目操作运算符【 ? : 】
int a=1; int b=2; int c=3;
int d = a > 0 ? c : b;
等价于
if(a > 0)
d = c;
else
d =b;
2、基本数据类型可空标识符【?】
因为在C#中值类型 int a 的默认值是0。同时也不能进 a = null的赋值操作,所有if(a != null)永远为真。但是可以使用 a?= null,对值类型的a进行null赋值。
例如下面的声明操作 :
public int? iNull1;
public int? iNull3 = null;
3、null合并运算符【??】
在赋值的结果中的变量如果为空则用??后面的值替代前面的变量,否则直接用前面的变量
例如:
string str1 = null;
string str2 = str1?? "name";
等价于
if(str1 != null)
str2 = str1;
else
str1 = "name";
4、null条件运算符【?.】
在用于在执行成员访问 (?.) 或索引 (?[) 操作之前,测试是否存在 NULL。 这些运算符可帮助编写更少的代码来处理 null 检查,尤其是对于下降到数据结构。
TestClass test1 = null;
int num = test1?.Num;
等价于
if(test1 != null)
num = test1.Num;
else
num = 0;
详细测试代码和运行结果详见我的知乎地址:C# ?问号操作符详解 - 知乎
网友评论