無效的墮落和連結

左側運算元必須是可空的,而右側運算元可能是也可能不是。結果將相應地輸入。

非空的

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
值:預設值

檢視演示