可空類型是System.Nullable結構體的實列。一個可空類型代表了相應實值型別的正確範圍附加null值。例如Nullable<Int32>的取值範圍應該是-2147483648到2147483647外加null。Null<bool>的取值為true,false和null。這種方法一般在處理資料庫的時候用到,因為資料庫裡面可能含有沒有賦值的實值型別。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將會被設定“0”。 int y = num.GetValueOrDefault(); // 如果num.HasValue為空白,那麼num.Value將會拋出InvalidOperationException異常。 try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } }}輸出的結果:num = NullNullable object must have a value.可空類型具有如下的屬性:•可空類型只能應用於實值型別,參考型別因為已經支援了null而不能被使用。•T?是System.Nullable<T>的縮寫,這裡T是一個實值型別。這兩種格式是可以互換的。•可以像使用普通類型一樣使用可空類型。例如int? x = 10;或者double? d = 40108;•使用System.Nullable.GetValueOrDefault還獲得值,或者當它為空白的時候獲得預設值。•使用HaseValue和Value唯讀屬性來測試它是不是空並且返回相應的非空值。 •如果含有值那麼HaseValue返回真,否則返回假。 •如果含有值那麼Value傳回值,否則拋出System.InvalidOperationException異常。 •HaseValue預設值為假,Value預設為未定義。•當向實值型別獲得可空類型的值得時候,使用??運算子來賦予一個可空類型一個預設值。例如:int? x = null; int y = x ?? -1;•不可以嵌套可空類型。Nullable<Nullabel<int>> n;將會拋出異常。