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

C#中?,??,??=,?:?,?.?,?[]各種問(wèn)號(hào)的用法和說(shuō)明詳解

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

前言

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

可空類型修飾符(?)

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

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

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

Null 合并運(yùn)算符(??)

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

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

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

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

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

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

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

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


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

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

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

三元條件運(yùn)算符(?:)

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

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

Null 條件成員訪問(wèn)運(yùn)算符 (?.)

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

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

Null 條件索引訪問(wèn)運(yùn)算符 (?[])

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

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

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

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

相關(guān)文章

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

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

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

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

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

    詳解C#讀寫(xiě)Excel的幾種方法

    這篇文章主要介紹了詳解C#讀寫(xiě)Excel的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • c#中WebService的介紹及調(diào)用方式小結(jié)

    c#中WebService的介紹及調(diào)用方式小結(jié)

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

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

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

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

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

    C#實(shí)現(xiàn)Struct結(jié)構(gòu)體與IntPtr轉(zhuǎn)換的示例詳解

    在 C# 編程的世界里,我們常常會(huì)遇到需要與非托管代碼交互,或者進(jìn)行一些底層內(nèi)存操作的場(chǎng)景,下面小編就來(lái)分享兩段非常實(shí)用的 C# 擴(kuò)展方法代碼,它們實(shí)現(xiàn)了結(jié)構(gòu)體與IntPtr之間的轉(zhuǎn)換等功能
    2025-06-06
  • Unity實(shí)現(xiàn)鼠標(biāo)或者手指點(diǎn)擊模型播放動(dòng)畫(huà)

    Unity實(shí)現(xiàn)鼠標(biāo)或者手指點(diǎn)擊模型播放動(dòng)畫(huà)

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

    c# dataTable 合并兩個(gè)列到一個(gè)新列中的簡(jiǎn)單實(shí)例

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

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

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

最新評(píng)論

曲阜市| 秦安县| 柘城县| 奉化市| 朝阳县| 天全县| 本溪市| 天峨县| 眉山市| 安丘市| 上思县| 明星| 宝应县| 林周县| 富民县| 海城市| 都昌县| 兴安县| 台山市| 奉新县| 寿宁县| 肥西县| 东辽县| 西城区| 托克逊县| 浮山县| 湘西| 富平县| 凯里市| 章丘市| 扎兰屯市| 景谷| 楚雄市| 渭源县| 宁津县| 淮北市| 洪洞县| 博客| 英德市| 陕西省| 宣恩县|