無效的墮落和連結
左側運算元必須是可空的,而右側運算元可能是也可能不是。結果將相應地輸入。
非空的
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
值:預設值