一、?
int? x = null;
即可以为null
的基础类型,以T?
表示,同样可以使用泛型Nullable<T>
表示:
bool? b = null;
Nullable<float> f = null;
C# 8.0 引入了可为空引用类型功能。
二、??
int y = x?? 12;
以上句代码为例,若x为null,则返回12;若x不为null,则返回x
因此,当某个方法的参数的默认值为某个变量时,可用以下方法实现:
void func(int? x = null)
{
x = x?? defaultX;
}
三、?.
仅当操作数的计算结果为非null
时,null
条件运算符才会将成员访问 ?.
或元素访问 ?[]
运算应用于其操作数;否则,将返回 null
。
-
如果
a
的计算结果为null
,则a?.x
或a?[x]
的结果为null
。 -
如果
a
的计算结果为非null
,则a?.x
或a?[x]
的结果将分别与a.x
或a[x]
的结果相同。