1.条件运算符 ?:
例如:a == null ? null : a.x;
这是最常见的问号?运算符。
支持:所有版本C#
2.可空类型定义的简写 int?
C#中null值不能赋值给值类型,如果值类型需要设置可为空则须用:System.Nullable<T> t定义,简写成T? t
例如:System.Nullable<int> total 可简写为: int? total
支持: >= .NET Framework 4.0
//A.比如下面一句,直接定义int为null是错误的,错误提示为无法将null转化成int,因为后者是不可以为null的值类型。
private int getNum = null;
//B.如果修改为下面的写法就可以初始指为null,在特定情况下?等同于基础类型为Nullable。
private int? getNum = null;
private Nullable<int> getNumNull = null;
3. null 合并运算符 ??
如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
例如:
int x?;
int y = x ?? -1;
支持: >= .NET Framework 4.0
//A.定义getNum为null,输出结果为0
private int? getNum = null;
Console.WriteLine(getNum ?? 0);
//B.定义getNum为1,输出结果为1
private int getNum = 1;
Console.WriteLine(getNum ?? 0);
4.null条件运算符 ?.
用于在执行成员访问 (?.
) 或索引 (?[
) 操作之前,测试是否存在 NULL。
if(a != null) a.x(); 等效于 a?.x();
支持 >= C# 6.0