在 C# 中包括了 Byte、int32、Single、char、DateTime 等實值型別的基本資料型態,這些基本資料型態是不可指定為 null 的,因為這些實值型別在記憶體中是以所存放的內容為值,不論它的內容是什麼都無法被視為 null,但有時後我就是想要將一個整數或是日期指定為 null ,例如我將朋友的姓名、年紀、生日用程式建檔的時後常常會發生這種情況,我並不知道他們真正的年紀或是生日,但是如果我在年紀那一欄填入 0 或是 -1 總是覺得非常不合理,跟本不會有人是 0 歲,生日那欄我也不知道應該填哪個日期才對,因為 DateTime 不能指定為 null , 以往處理這種事情總是要想辦法繞一大圈來判斷所填入的值到底是真的資料還是因為不知道該填什麼所以給它亂填一通的無效資料,在 .net 2.0 裏特別為了這種情況加入了可指定為 Null 的實值型別 Nullable Type,事實上 Nullable Type 就是在背後偷偷的將實值型別包裝起來而擁有指定為 null 的能力。

宣告一個 Nullable Type 的實值型別僅僅只需要在型別後面加上一個問號。


Nullable Type 的變數有兩個很重要的成員
  1. HasValue:取得值,指出目前 Nullable 物件是否有值。
  2. Value:取得目前的 Nullable 值。

利用判斷 HasValue 是否為 true 可以得知目前的變數是有值的變數或是null,如果 HasValue為 true則可以用 Value 來取得值。


很高興有了 Nullable Type ,讓我們可以更簡單的處理不明的實值型別。