C# int? 關鍵字


1、int?  關鍵字說明

(1)、int? 表示一個int類型,且該int類型可空,如果不加?的話,那么int類型的默認值為0,不能賦null值,代碼如下:

  int aa = null;

(2)、當給一個變量定義成int?類型的時候,那么我們在給其賦初值的時候,可以賦null,也可以賦0.

(3)、int??:用於判斷並賦值,先判斷當前變量是否為null,如果是就可以賦役個新值,否則跳過,代碼如下:

static void Main(string[] args)
{
     int? aa = 1;
     Console.WriteLine(aa ?? 0);
}

輸出:

 

2、?(Nullable)

Nullable是.NET 2.0中新提供的一種用於標記一個值類型是否可以為空的技術。

對於一個類型,我們既可以給它賦一個值,也可以給它分配一個空引用,我們就說這個類型是可空的,因此:

(1)、類似string的引用類型就是可空類型

(2)、像int32等的值類型就不是可空類型,因為它們不能賦null值,因為Nullable(?)結構將支持值類型擴展成可空類型,但是不支持引用類型,應為它們原本就是可空類型

 

3、可空類型具有以下特征

(1)、可空類型表示可被賦值為 null 值的值類型變量。無法創建基於引用類型的可空類型。(引用類型已支持 null 值。)。

(2)、語法 T? 是 System.Nullable<T> 的簡寫,此處的 T 為值類型。這兩種形式可以互換。

(3)、為可空類型賦值與為一般值類型賦值的方法相同,如 int? x = 10; 或 double? d = 4.108;

(4)、如果基礎類型的值為 null,請使用 System.Nullable.GetValueOrDefault 屬性返回該基礎類型所賦的值或默認值,例如 int j = x.GetValueOrDefault();

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

(6)、如果此變量包含值,則 HasValue 屬性返回 True;或者,如果此變量的值為空,則返回 False

(7)、如果已賦值,則 Value 屬性返回該值,否則將引發 System.InvalidOperationException

(8)、可空類型變量的默認值將 HasValue 設置為 false。未定義 Value

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

(10)、不允許使用嵌套的可空類型。將不編譯下面一行:Nullable<Nullable<int>> n;

 

4、代碼示例:

        static void Main()
        {
            int? num = null;
            //可空類型如果設置為默認值為null的話,那么系統將會把HasValue屬性設置為false
            if (num.HasValue == true)
            {
                System.Console.WriteLine("num = " + num.Value);
            }
            else
            {
                System.Console.WriteLine("num = Null");
            }
            int y = num.GetValueOrDefault();
            //如果將可空類型的默認值設置為null,那么如果此時獲取其Value屬性,那么系統將會報(System.InvalidOperationException)錯
            try
            {
                y = num.Value;
            }
            catch (System.InvalidOperationException e)
            {
                System.Console.WriteLine(e.Message);
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM