C#中可空類型的使用

一、什麼是可空類型

可空類型允許我們創建一個值類型變量並且可以標記為有效或無效,這樣我們就可以有效地將值類型設置為null。可空類型總是基於另外一個叫做基礎類型的已經被聲明的類型。

可以從任何值類型創建可空類型。不能從引用類型或其他可空類型創建可空類型。不能在代碼中顯示聲明可空類型,隻能聲明可空類型的變量。編譯器會使用泛型隱式地創建可空類型。

舉例:聲明一個可空int類型的變量

產生的可空類型如下:

 必須確保使用可空類型時,該可空變量不是null

可空類型和相應的非可空類型可以輕松轉換:

二、為可空類型賦值

可以將以下三種類型的值賦給可空變量:

基礎類型的值同一可空類型的值null 

三、使用空接合運算符

  • 空接合運算符允許我們在可空類型變量為null時返回一個值給表達式。(可空類型也可以使用標準運算符和比較運算符)
  • 空接合運算符由兩個連續的問號組成。
  • 第一個操作數是可空類型的變量。
  • 第二個操作數是基礎類型的不可空值。
  • 在運行時,如果第一個操作數運算後為null,將返回第二個操作數作為結果。
        static void Main(string[] args)
        {
            int? myInt = null;
            Console.WriteLine("myInt:{0}", myInt ?? -1);
 
            myInt = 6;
            Console.WriteLine("myInt:{0}", myInt ?? -1);
            
        }

四、使用可空用戶自定義類型

1. 創建用戶自定義值類型

    struct MyStruct //聲明結構
    {
        public int X;
        public int Y;
 
        public MyStruct(int x, int y) 
        {
            X = x;
            Y = y;
        }
    }

2.將值類型轉換為可空類型

        static void Main(string[] args)
        {
            MyStruct? ms = new MyStruct(6,7);//方式1,使用?
 
            MyStruct myStruct = new MyStruct(6,7);
            Nullable<MyStruct> ms3 =  new Nullable<MyStruct>(myStruct);//使用Nullable創建的可空類型
 
        }

3.使用自定義值類型轉換後的可空類型,可空類型其數據隻能通過Value來訪問。

 struct MyStruct //聲明結構
    {
        public int X;
        public int Y;
 
        public MyStruct(int x, int y) 
        {
            X = x;
            Y = y;
        }
    }
    internal class Program
    {
 
        static void Main(string[] args)
        {
            MyStruct ms1 = new MyStruct(6,7);//值類型
            
            MyStruct? ms2 = new MyStruct(6,7);//使用?創建的可空類型
 
            MyStruct myStruct = new MyStruct(6,7);
            Nullable<MyStruct> ms3 =  new Nullable<MyStruct>(myStruct);//使用Nullable創建的可空類型
            
 
            Console.WriteLine("X={0},Y={1}", ms1.X, ms1.Y);
 
            Console.WriteLine("X={0},Y={1}", ms2.Value.X, ms2.Value.Y);
 
            Console.WriteLine("X={0},Y={1}", ms3.Value.X, ms3.Value.Y);
 
 
        }
    }、

到此這篇關於C#中可空類型的使用的文章就介紹到這瞭,更多相關C# 可空類型內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: