C 單問號( )與雙問號( )

2021-09-27 07:41:11 字數 897 閱讀 1341

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

C 單問號( )和雙問號( )用法。

1 單問號 作用 用於給變數設初化的時候,給變數 int型別 賦為null值,而不是0。例子 public int a 預設值為0 public int b 預設值為null 參考 2 雙問號 作用 用於判斷並賦值,先判斷當前變數是否為null,如果是就可以賦乙個新值,否則跳過。例子 public ...

C 單問號和雙問號的使用

有時int型別的值可能為空,但int型別不能是string型別。用下列方法解決這個問題private int?getnum null 在控制台輸出getnum,若getnum值為空字串,則輸出0。語句如下。用來判斷getnum值是否為null。console.writeline getnum?0 下...

C 型別轉換 is as 單問號 雙問號解密

在c 中型別的轉換分兩種 顯式和隱式,基本的規則如下。基類物件轉化為子類物件,必須顯式轉換,規則 型別名 物件。值型別和引用型別的轉換採用裝箱 boxing 或拆箱 unboxing 子類轉化為基類物件。基本型別互相之間轉化可以用convert類來實現。字串型別轉換為對應的基本型別用parse方法,...