最近在學習c# 2.0,在.net framework 2.0中新增加了system.nullable泛型結構,它具有處理值型別資料具和處理null的功能。例如:
system.nullablei = 2;
i = null;
system.nullableb = null;
另外c#中還提供了上述表示方法的簡寫形式:
int? i = null;
bool? b = null;
此時,i除了可以正常處理int值外還可以被賦值為null;b則可以處理true、false和null值。感覺上好像「值型別可以處理null」似的,實際上,上面的system.nullable是對int的一種擴充套件,前者可被稱為「可空的int」,後者被稱為「非空的int」,它們所指的並非同一事物。因此,當把乙個可空型別值賦給乙個非空型別時,將引發編譯錯誤,例如:
int? ni = null;
int i = ni; //這一句將引發編譯錯誤
int? ni = null;
int i = ni ?? 0;
??運算子會首先判斷左運算元是否為空,如果為空則返回??後面給出的預設值,否則返回左運算元,其意義類似於:
int? ni = null;
int i = ni.hasvalue ? ni.value : 0;
C 中可空型別
c 提供了乙個特殊的資料型別,nullable 型別 可空型別 可空型別可以表示其基礎值型別正常範圍內的值,再加上乙個 null 值。例如,nullable int32 讀作 可空的 int32 可以被賦值為 2,147,483,648 到 2,147,483,647 之間的任意值,也可以被賦值為 ...
C 可空型別 和 語法
public void getinfo int?pagesize int?代表 pagesize 可以為null pagesize pagesize 2 上面這一行 和如下 等同,它的意思就是pagesize為null嗎,如果是就返回2,如果不是就返回pagesize pagesize pagesi...
c 的可空型別
t variablet 可空型別的基本型別,variable 表示可空型別的變數,表示可空型別 如果未賦初值,則判定為null 可空型別包含hasvalue和value兩個屬性 其中hasvalue為bool,value為該例項的值 可空型別的例項只包含乙個方法 getvalueordefault ...