而成為System.Nullable結構的執行個體,例如
Nullable<bool> b = null;
語法T?是Nullable<T>的簡略表示法,所以上面也可以表示成
bool? b = null;
把一個變數宣告成Nullable對於使用容許不宣告的變數很方便
不過在使用此型別的變數的時候需要特別小心
因為有時候並沒有被宣告(或是設成了null),所以在轉換成原有形別之前
需要先檢查是否有被設定
public bool ChangeToBool(bool? b)
{
/// check if b is null
if (b.HasValue)
{
return (bool)b;
}
else
{
return false;
}
}
另外,C#裡面也定義了更簡單的null聯合運算子??
所以上面的函式也可以直接寫成
public bool ChangeToBool(bool? b)
{
/// if b is null, return false, otherwise, return b
return b ?? false;
}
注意,透過null聯合運算子的結果就不需要再做型別轉換了
--
參考資料
可為 Null 的型別 (C# 程式設計手冊)
HOW TO:從 bool? 安全轉型至 bool (C# 程式設計手冊)
?? 運算子 (C# 參考)
沒有留言:
張貼留言