无效的堕落和链接

左侧操作数必须是可空的,而右侧操作数可能是也可能不是。结果将相应地输入。

非空的

int? a = null;
int b = 3;
var output = a ?? b;
var type = output.GetType();  

Console.WriteLine($"Output Type :{type}");
Console.WriteLine($"Output value :{output}");

输出:

类型:System.Int32
值:3

查看演示

可空

int? a = null;
int? b = null;
var output = a ?? b;

output 将是 int? 类型并且等于 bnull

多重合并

合并也可以在链中完成:

int? a = null;
int? b = null;
int c = 3;
var output = a ?? b ?? c;

var type = output.GetType();    
Console.WriteLine($"Type :{type}");
Console.WriteLine($"value :{output}");

输出:

类型:System.Int32
值:3

查看演示

无条件链接

空合并运算符可以与空传播运算符一起使用,以提供对对象属性的更安全访问。

object o = null;
var output = o?.ToString() ?? "Default Value";

输出:

类型:System.String
值:默认值

查看演示