可空類型具備如下特性: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.InvalidOperationException。io
可空類型變量的默認值將 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.