C 可空型別和空接合運算子

2022-03-25 02:46:49 字數 1021 閱讀 5784

隨手翻閱c#高階程式設計時,看到可空型別和運算子這一節,又發現了自己的乙個c#知識盲點。可空型別:

可空型別只能用於值型別,不能用於引用型別,引用型別本身支援null值。

如果直接把null賦值給int類 型,會出現乙個錯誤"無法將 null 轉換成'int',因為它是一種值型別"。

賦值時應該使用 int? a = null;

可空型別與一元或二元運算子一起使用是,如果乙個運算元或兩個運算元都是null,其 結果為null。

int?a =

null

; int?b

=a *5

; //

b = null

int?c =

a +5;

//c = null

比較可空型別時,只要有乙個為null,結果為null。

int?a =

null

; int?b

=null

; a

>

b; //

false

a ==

b; //

false

空接合運算子(??):

如果第乙個運算元不是null,則整個表示式就等於第乙個運算元的值,如果第乙個運算元是 null,則整個表示式就等於第乙個運算元的值。

int?a =

null

; int

d; d =b

??3; //

a = 3d =

3??b; //

a = 3

可空型別特性(msdn):

·使用 ?? 運算子分配預設值,當前值為空的可空型別被賦值給非空型別時將應用該預設值,如 int? x = null; int y = x ?? -1;。

·不允許使用巢狀的可空型別。將不編譯下面一行:nullable> n;

詳 細參考:msdn2.microsoft.com/zh-cn/library/1t3y8s4s(vs.80).aspx

空接合運算子, 可空型別和運算子,typeof

空接合運算子空接合運算子 提供了一種快捷方式,可以在處理可空型別和引用型別時表示null值。這個運算子放在兩個運算元之間,第乙個運算元必須是乙個可空型別或引用型別,第二個運算元必須與第乙個運算元的型別相同,或者可以隱含地轉換為第乙個運算元的型別。空接合運算子的計算如下 如果第乙個運算元不是null,...

空接合運算子, 可空型別和運算子,typeof

空接合運算子空接合運算子 提供了一種快捷方式,可以在處理可空型別和引用型別時表示null值。這個運算子放在兩個運算元之間,第乙個運算元必須是乙個可空型別或引用型別,第二個運算元必須與第乙個運算元的型別相同,或者可以隱含地轉換為第乙個運算元的型別。空接合運算子的計算如下 如果第乙個運算元不是null,...

c 空接合 運算子的運用

相信很多人都看到?運算子,但是不一定每個人都知道它是用來做什麼的,之前我也看到過很多次,但是因為一直沒有去用過,所以也沒有了解他的作用,今天又看到了,所以查了的msdn,原來?運算子叫做空接合運算子,作用是,要判斷乙個物件是否為null,如果為null那麼給賦於乙個預設的值,做法相當的麻煩.例如 i...