最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中?,??,??=,?:?,?.?,?[]各種問號的用法和說明詳解

 更新時間:2025年11月26日 09:04:28   作者:追逐時光者  
這篇文章主要介紹了C#中?、??、??=、?:、?.、?[]六種問號的用法和說明,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

前言

在 C# 中,問號(?)遠不止是一個簡單的標點符號。隨著語言版本的迭代更新,C# 圍繞問號(?)發(fā)展出了一套強大而優(yōu)雅的空值處理和條件表達機制。熟練掌握這些操作運算符不僅能大幅提升代碼的簡潔性和可讀性,還能有效避免惱人的空引用異常,構建更加健壯的應用程序。

可空類型修飾符(?)

在 C# 中,值類型(如int、long、bool、DateTime等)默認不能為null。使用 ? 修飾符,我們可以將值類型轉換為可空類型。

            int notNullableInt;// 非空int類型默認為 0
            int? nullableInt = null;
            bool? nullableBool = null;
            long? nullableLong = null;
            DateTime? nullableDate = null;

            // 檢查是否有值
            if (nullableInt.HasValue)
            {
                Console.WriteLine($"整數(shù)值: {nullableInt.Value}");
            }
            else
            {
                Console.WriteLine("變量沒有值(為null)");
            }

Null 合并運算符(??)

Null 合并運算符(??)如果左邊的值不為null,則返回左邊的值,否則返回右邊的值。

        static void Main(string[] args)
        {
            string userName1 = "小明";
            string userName2 = null;
            var getUserName = userName1 ?? userName2 ?? "默認用戶";

            Console.WriteLine(getUserName); // 輸出: 小明

            string config1 = null;
            string config2 = null;
            string config3 = "DefaultConfig";
            string finalConfig = config1 ?? config2 ?? config3 ?? "FallbackConfig";
            Console.WriteLine(finalConfig); // 輸出: DefaultConfig
        }

Null 合并賦值運算符(??=)

C# 8.0 引入的運算符,僅當左操作數(shù)為null時,才將右操作數(shù)的值賦給左操作數(shù)。這是懶加載模式的理想選擇。

        static void Main(string[] args)
        {
            string? name = null;
            name ??= "時光者";
            Console.WriteLine(name); // 時光者

            name ??= "大姚"; // 不改變
            Console.WriteLine(name); // 時光者


            //惰性初始化
            Dictionary<string, string>? cache = null;

            cache ??= new Dictionary<string, string>();
            cache["UserName"] = name;

            Console.WriteLine(cache["UserName"]);
        }

三元條件運算符(?:)

條件運算符(?:),又稱三元運算符,是一種簡潔的條件表達式形式。它對布爾表達式進行求值,并根據(jù)結果為true或false,選擇性地返回兩個表達式中的對應結果,為簡單條件判斷提供了一種比傳統(tǒng)if-else語句更緊湊、表達力更強的語法形式。

        static void Main(string[] args)
        {
            int score = 80;
            string level = score >= 60 ? "Pass" : "Fail";
            Console.WriteLine(level);
        }

Null 條件成員訪問運算符 (?.)

Null 條件成員訪問運算符 (?.) 在訪問對象成員(屬性、方法、字段等)前先檢查對象是否為 null。如果對象為 null,整個表達式返回 null 而不會拋出 NullReferenceException;如果對象不為 null,則正常訪問成員。

        static void Main(string[] args)
        {
            // 基本用法
            Person person = null;
            string name = person?.Name; // 不會拋出異常,name 為 null
            Console.WriteLine(name ?? "name is null"); // 輸出: name is null
        }

Null 條件索引訪問運算符 (?[])

Null 條件索引訪問運算符 (?[]) 在使用索引器訪問集合元素前先檢查集合對象是否為 null。如果集合為 null,整個表達式返回 null 而不會拋出異常;如果集合不為 null,則正常訪問索引位置的元素。

        static void Main(string[] args)
        {
            List<string> names = null;
            string firstName = names?[0]; // 不會拋出異常,firstName 為 null
            Console.WriteLine(firstName ?? "No names available"); // 輸出: No names available

            // 初始化列表后訪問
            names = new List<string> { "時光者", "小袁", "大姚" };
            string secondName = names?[0]; // 安全訪問索引為0的元素
            Console.WriteLine(secondName); // 輸出: 時光者
        }

到此這篇關于C#中?,??,??=,?: ,?. ,?[]各種問號的用法和說明詳解的文章就介紹到這了,更多相關C# ?用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于C#實現(xiàn)Windows服務的方法詳解

    基于C#實現(xiàn)Windows服務的方法詳解

    在實際應用過程中,有時候我們希望開發(fā)的程序,不需要界面,直接開機就可以長時間運行,這時候,我們可以考慮做成一個Windows服務。這篇文章跟大家介紹一下,如何基于C#實現(xiàn)Windows服務的創(chuàng)建、安裝、啟動、停止和卸載,需要的可以參考一下
    2022-09-09
  • C#防SQL注入代碼的三種方法

    C#防SQL注入代碼的三種方法

    這篇文章主要介紹了C#防SQL注入代碼的三種方法,有需要的朋友可以參考一下
    2014-01-01
  • 詳解C#讀寫Excel的幾種方法

    詳解C#讀寫Excel的幾種方法

    這篇文章主要介紹了詳解C#讀寫Excel的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • c#中WebService的介紹及調用方式小結

    c#中WebService的介紹及調用方式小結

    這篇文章主要給大家介紹了關于c#中的WebService及其調用方式的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • 基于C#實現(xiàn)員工IC卡的讀寫功能

    基于C#實現(xiàn)員工IC卡的讀寫功能

    這篇文章主要為大家詳細介紹了C#如何實現(xiàn)讀寫員工IC卡的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • c#圖片縮放圖片剪切功能實現(xiàn)(等比縮放)

    c#圖片縮放圖片剪切功能實現(xiàn)(等比縮放)

    c#圖片縮放剪切功能實現(xiàn),代碼中包含了c#圖片處理的一些基礎知識,與大家分享
    2013-12-12
  • C#實現(xiàn)Struct結構體與IntPtr轉換的示例詳解

    C#實現(xiàn)Struct結構體與IntPtr轉換的示例詳解

    在 C# 編程的世界里,我們常常會遇到需要與非托管代碼交互,或者進行一些底層內存操作的場景,下面小編就來分享兩段非常實用的 C# 擴展方法代碼,它們實現(xiàn)了結構體與IntPtr之間的轉換等功能
    2025-06-06
  • Unity實現(xiàn)鼠標或者手指點擊模型播放動畫

    Unity實現(xiàn)鼠標或者手指點擊模型播放動畫

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)鼠標或者手指點擊模型播放動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • c# dataTable 合并兩個列到一個新列中的簡單實例

    c# dataTable 合并兩個列到一個新列中的簡單實例

    這篇文章介紹了c# dataTable 合并兩個列到一個新列中的簡單實例,有需要的朋友可以參考一下
    2013-10-10
  • C#實現(xiàn)俄羅斯方塊

    C#實現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細介紹了C#實現(xiàn)俄羅斯方塊小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評論

喀喇| 英德市| 新余市| 那坡县| 宝兴县| 井研县| 乐陵市| 奉新县| 聂拉木县| 山阴县| 田阳县| 屯留县| 平乐县| 曲松县| 山西省| 常熟市| 梧州市| 贵德县| 南昌县| 利津县| 博乐市| 永善县| 鲁甸县| 福泉市| 师宗县| 潞西市| 当阳市| 松原市| 尉犁县| 扎囊县| 鄢陵县| 营口市| 榆林市| 辽阳县| 田阳县| 二手房| 三明市| 宝兴县| 喀什市| 阳新县| 德兴市|