无效的堕落和链接
左侧操作数必须是可空的,而右侧操作数可能是也可能不是。结果将相应地输入。
非空的
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?
类型并且等于 b
或 null
。
多重合并
合并也可以在链中完成:
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
值:默认值