2012年6月26日 星期二

[C#]Nullable Type

在C#中,你不能把一個int或bool變數設定成null。比如說以下這個範例:
bool b = null;  //以下程式編譯時會出現錯誤訊息
int i = null;     
DateTime date = null;   
但是有時候我們使用的變數不一定有值怎麼辦? 這時候就可以用Nullable type。只要在宣告變數時候在型態後面加一個問號,此變數就變成可以被設成null的Nullable type。
bool? nullableBool = null;
int? nullableInt = null;
DateTime? nullableDate = null;
一般的變數可以自動轉換成nullable type:
int i = 5566;
int? j = i;
如果要把nullable type轉換成一般變數,就需要強制轉換:
int? i = 5566;
int j = (int)i;
當一個變數是nullable type時,會自動多一個HasValue的特性。可以用來判斷變數是不是null。如果是null的話HasValue會是false。反之有值不是null的話,就會是true。
int? num = null;
if (num.HasValue == true)
{
    System.Console.WriteLine("num = " + num.Value);
}
使用nullable type最大的優點就是可以讓你程式比較不容易當掉,一些由user輸入的變數可以宣告成nullable type。如此一來當user輸入錯誤資料時候,可以把變數設定成null之後再做處理。

沒有留言:

張貼留言