天天看點

C#單問号(?)與雙問号(??)

1.單問号(?)

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);
           

轉載于:https://www.cnblogs.com/appleyrx520/p/7018610.html

c#