看了這3小節,發現作者講得太詳細了,把一個都在正常使用的用法說得太神密了,搞得不知是自己不懂作者的苦心,還是作者用意為之,這裡給大家都簡單講下吧,太深的真心講不下去。
1.可空類型的核心部分是System.Nullable<T>,除了這個之外,還有由靜態類System.Nullable提供的工具方法。
2.Nullable<T>是一個泛型類型,類型參數T是一個值類型約束。
3.T的類型稱為可空類型的基礎類型。
4.Nullable<T>有兩個構造函數,一個用於創建沒有值的實例,一個接收T的一個實例作為值
1 Nullable<int> n = new Nullable<int>(); 2 Nullable<int> n1 = new Nullable<int>(1);
5.框架提供了兩個轉換,T到Nullable<T>的隱式轉換,Nullable<T>可以顯式轉換為T
1 Nullable<long> nL = 7; 2 long L = (long)nL; 3 4 //報錯,需要顯式轉換 5 //long ll = nL;
說到上述第一行代碼,讓我想起C++中的復制構造方法,或者一個參數的構造方法,大家可以去看下,C#應該也上C++中的實現吧。
6.Nullable<T>的裝箱和拆箱,不知道可不可以理解成T到Nullable<T>的隱式轉換是裝箱,Nullable<T>可以顯式轉換為T是拆箱。
7.可以使用語法糖,減少代碼的輸入,使用一個符號"?"
1 int? intNull = null;
8.可以使用null進行比較,如上
9.可空類型可參與運算符,其中會包含一些類型轉換,個中體會用過了就發現和一般的類型一樣,又因為可空類型可以使用null表示,就可以參與邏輯運算符(就是返回true和false那些)。當然也可以想到對於運算符as也是正常且可用。
請斧正。