1.1 單問號運算符可以表示:可為Null類型,C#2.0里面實現了Nullable數據類型
//A.比如下面一句,直接定義int為null是錯誤的,錯誤提示為無法將null轉化成int,因為后者是不可以為null的值類型。
private int getNum = null;
//B.如果修改為下面的寫法就可以初始指為null,在特定情況下?等同於基礎類型為Nullable。
private int? getNum = null;
private Nullable<int> getNumNull = null;
2.雙問號(??)
?? 運算符稱為 null 合並運算符,用於定義可以為 null 值的類型和引用類型的默認值。如果此運算符的左操作數不為 null,則此運算符將返回左操作數;否則返回右操作數。
可以為 null 的類型可以包含值,或者可以是未定義的。?? 運算符定義當可以為 null 的類型分配給非可以為 null 的類型時返回的默認值。如果在嘗試將可以為 null 值的類型分配給不可以為 null 值的類型時沒有使用 ?? 運算符,則會生成編譯時錯誤。如果使用強制轉換,且當前還未定義可以為 null 值的類型,則會引發InvalidOperationException 異常。
//A.定義getNum為null,輸出結果為0
private int? getNum = null;
Console.WriteLine(getNum ?? 0);
//B.定義getNum為1,輸出結果為1
private int getNum = 1;
Console.WriteLine(getNum ?? 0);