首頁 > 軟體

C#中可空型別的使用

2023-04-08 06:00:24

一、什麼是可空型別

可空型別允許我們建立一個值型別變數並且可以標記為有效或無效,這樣我們就可以有效地將值型別設定為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# 可空型別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com