C#2.0增功能04 能夠爲 null 的類型

  能夠爲 null 的類型是 System.Nullable<T> 結構的實例。 能夠爲 null 的類型可表示一個基礎類型的全部值 T,還能夠再表示一個 null 值。 基礎類型 T 能夠是任何不可爲 null 的值類型T 不能是引用類型。html

例如,能夠將 null 或任何整數值(從 Int32.MinValueInt32.MaxValue)賦給 Nullable<int>,並可將 truefalsenull 賦給Nullable<bool>數據庫

須要表示基礎類型的未定義的值時,請使用能夠爲 null 的類型。 布爾變量只能有兩個值:true 和 false。 沒有「未定義」的值。 在許多編程應用程序中,尤爲是數據庫交互中,變量值可能未定義或缺失。 例如,數據庫中的字段可能包含值 true 或 false,但它也可能根本不包含任何值。 這種狀況下要使用 Nullable<bool> 類型。express

能夠爲 null 的類型具備如下特徵:編程

  • 能夠爲 null 的類型表示能夠向其賦與 null 值的值類型變量。 不能根據引用類型建立能夠爲 null 的類型 (引用類型已支持 null 值)。api

  • 語法 T?Nullable<T> 的簡寫。 這兩種形式是可互換的。ide

  • 向能夠爲 null 的類型賦值的方法與向基礎值類型賦值的方法相同:int? x = 10;double? d = 4.108;還可賦予 null 值:int? x = null;測試

  • 使用 Nullable<T>.HasValueNullable<T>.Value 只讀屬性可測試是否存在 null 值並檢索值,如如下示例所示:if (x.HasValue) y = x.Value;ui

  • 還可將 ==!= 運算符用於能夠爲 null 的類型,如如下示例所示:if (x != null) y = x.Value; 若是 ab 均爲 null,則 a == b 的計算結果爲 true

  • 從 C# 7.0 開始,能夠使用模式匹配來檢查和獲取能夠爲 null 的類型的值:if (x is int valueOfX) y = valueOfX;

  • T? 的默認值是一個實例,其 HasValue 屬性返回 false

  • 使用 GetValueOrDefault() 方法可返回賦予的值,若是能夠爲 null 的類型的值爲 null,它還可返回基礎值類型的默認值。

  • 使用 GetValueOrDefault(T) 方法可返回賦予的值,若是能夠爲 null 的類型的值爲 null,它還可返回提供的默認值。

  • 使用 null 合併運算符 ??,基於能夠爲 null 的類型的值向基礎類型賦值:int? x = null; int y = x ?? -1;在示例中,因爲 x 爲 null,因此 y 的結果值爲 -1

  • 若是定義了(用戶定義的)兩種數據類型之間的轉換,還可將同一轉換用於這些數據類型的可爲 null 的版本。

  • 不得嵌套能夠爲 null 的類型。 不會編譯下面的一行代碼:Nullable<Nullable<int>> n;

有關詳細信息,請參閱使用能夠爲 null 的類型,以及如何:標識能夠爲 null 的類型主題。

請參閱

 

相關文章
相關標籤/搜索