隨手翻閱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...