c# 運算符 ? ??


 static void Main(string[] args)
        {
            //空合並行運算??
            /*?? 提供了一種快捷方式,可以在處理可空類型和引用類型時表示null值的可能性,這個運算符放在
             兩個操作數之間,第一個操作數必須是一個可空類型或者引用類型,第二個操作數必須與第一個操作數
             類型相同,或者可以隱式轉換為第一個操作數的類型
             1、如果第一個操作數不是null,整個表達式就等於第一個操作數的值;
             2、如果第一個操作數是null, 整個表達式就等於第二個操作數的值
            */
            int? a = null;
            int b;
            b = a ?? 10;
            a = 3;
            Console.WriteLine(b); // 10
            b = a ?? 10;
            Console.WriteLine(b); //3

            //空值傳播運算符 object?.method;
            /*
             * 生產環境中代碼會檢查驗證變量空值條件,訪問變量時需要檢查判斷是否為null,否則會拋出NullReferenceException, 但是有時很容易忘記這樣的檢查,可以利用空值傳播的特性來簡化代碼
             */
            int? d = 2;
            Console.WriteLine(d?.ToString().GetType().Name); // String
            d = null;
            Console.WriteLine(d?.ToString().GetType().Name); // null
            
            //當空值傳播類型訪問int類型的屬性時,不能將結果直接分配給int,因為結果可能為null,可以將結果分配為可空的int?
            //當然我們也可以結合空合並行運算符的特性??來實現

            Person p = new Person();
            int e = p?.Age ?? 666;
            Console.WriteLine(e); //123

            p = null;
            e = p?.Age ?? 666;
            Console.WriteLine(e); //666

            //當然也可以將這種特性用於數組的可空判斷

            int[] arr = null;
            
            Console.WriteLine(arr?[0]); //null

            arr = new[] {1, 2, 3};

            Console.WriteLine(arr?[0]); //1
            Console.ReadKey();

 


免責聲明!

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



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