定義一個nullable類型非常類似於定義一個非nullable類型。不同之處在於使用類型修飾符“?”。比如定義一個整型如下:
int myInt = 1;
要使一個整型變量可以存儲一個null值,可以如下聲明:
int? myNullableInt = 1;
這兩個變量看起來似乎是一樣的。但事實並非如此。實際上,Nullable類型是一個結構體,它有兩個公開可讀字段:HasValue和Value。HasValue是一個布爾值,當有值存儲時它為真,當變量值為null時HasValue為假。當HavValue為真是時,可以取得變量的值;為假時,當嘗試取得變量的值時會拋出一個異常。
現在null是C#的一個關鍵字,它可以被賦給一個Nullable型變量。下面是對Nullable型變量賦值的兩種有效方式。
double? myDouble = 3.14159;
double? myOtherDouble = null;
可以看到,myDouble被賦給一個值,它也可以被賦以null。在第二個語句中,myOtherDouble被初始化為null——在一個非Nullable型變量中這樣做會產生異常。