C#可空類型 T?

可空類型概述

可空類型具備如下特性:web

  • 可空類型表示可被賦值爲 null 值的值類型變量。沒法建立基於引用類型的可空類型。(引用類型已支持 null 值。)。測試

  • 語法 T? 是 System.Nullable<T> 的簡寫,此處的 T 爲值類型。這兩種形式能夠互換。spa

  • 爲可空類型賦值與爲通常值類型賦值的方法相同,如 int? x = 10;  double? d = 4.108;orm

  • 若是基礎類型的值爲 null,請使用 System.Nullable.GetValueOrDefault 屬性返回該基礎類型所賦的值或默認值,例如 int j = x.GetValueOrDefault();ci

  • 請使用 HasValue 和 Value 只讀屬性測試是否爲空和檢索值,例如 if(x.HasValue) j = x.Value;get

    • 若是此變量包含值,則 HasValue 屬性返回 True;或者,若是此變量的值爲空,則返回 False。it

    • 若是已賦值,則 Value 屬性返回該值,不然將引起 System.InvalidOperationExceptionio

    • 可空類型變量的默認值將 HasValue 設置爲 false。未定義 Value編譯

  • 使用 ?? 運算符分配默認值,當前值爲空的可空類型被賦值給非空類型時將應用該默認值,如 int? x = null; int y = x ?? -1;form

  • 不容許使用嵌套的可空類型。將不編譯下面一行:Nullable<Nullable<int>> n;

class NullableExample
{
    static void Main() { int? num = null; if (num.HasValue == true) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } //y is set to zero int y = num.GetValueOrDefault(); // num.Value throws an InvalidOperationException if num.HasValue is false try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } } } 

以上將顯示輸出:

num = Null

Nullable object must have a value.

相關文章
相關標籤/搜索