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

C#中的? 和 ??運(yùn)算符使用詳解

 更新時(shí)間:2026年02月02日 09:32:28   作者:Yashar Qian  
C#中的?(null條件運(yùn)算符)和??(null合并運(yùn)算符)用于簡(jiǎn)化null值檢查和處理,?運(yùn)算符在訪問(wèn)成員或元素前檢查對(duì)象是否為null,而??運(yùn)算符在左側(cè)表達(dá)式為null時(shí)返回右側(cè)的值,這兩個(gè)運(yùn)算符可以大大減少代碼中的null檢查樣板代碼,本文給大家介紹的非常詳細(xì)

在 C# 中,?(null 條件運(yùn)算符)和 ??(null 合并運(yùn)算符)是兩個(gè)非常有用的運(yùn)算符,用于簡(jiǎn)化 null 值檢查和處理。

1.?(Null 條件運(yùn)算符)

? 運(yùn)算符用于在訪問(wèn)成員或元素之前檢查對(duì)象是否為 null。如果對(duì)象為 null,則返回 null 而不拋出異常。

基本用法

string name = person?.Name;
// 等同于
string name = (person != null) ? person.Name : null;

鏈?zhǔn)秸{(diào)用

int? length = people?.FirstOrDefault()?.Name?.Length;

方法調(diào)用

person?.PrintName(); // 如果 person 為 null,則不執(zhí)行方法

數(shù)組/集合訪問(wèn)

int? firstItem = array?[0];

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

?? 運(yùn)算符用于在左側(cè)表達(dá)式為 null 時(shí)返回右側(cè)的值。

基本用法

string displayName = name ?? "匿名用戶";
// 等同于
string displayName = (name != null) ? name : "匿名用戶";

與?結(jié)合使用

string name = person?.Name ?? "未知";

鏈?zhǔn)绞褂?/h3>
string configValue = config?.Settings?.Value ?? "默認(rèn)值";

3.??=(C# 8.0 引入的 Null 合并賦值運(yùn)算符)

name ??= "默認(rèn)值";
// 等同于
if (name == null)
{
    name = "默認(rèn)值";
}

實(shí)際應(yīng)用示例

class Program
{
    static void Main()
    {
        Person person = null;
        
        // 使用 ?. 避免 NullReferenceException
        string name = person?.Name;
        Console.WriteLine(name); // 輸出 null
        
        // 使用 ?? 提供默認(rèn)值
        string safeName = person?.Name ?? "無(wú)名氏";
        Console.WriteLine(safeName); // 輸出 "無(wú)名氏"
        
        // 復(fù)雜示例
        int? age = person?.Age ?? 18;
        Console.WriteLine(age); // 輸出 18
        
        // ??= 運(yùn)算符
        string nickname = null;
        nickname ??= "小新";
        Console.WriteLine(nickname); // 輸出 "小新"
    }
}

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

注意事項(xiàng)

  1. ? 運(yùn)算符會(huì)改變表達(dá)式的類(lèi)型,使其變?yōu)榭煽疹?lèi)型
  2. ?? 右側(cè)的表達(dá)式只有在左側(cè)為 null 時(shí)才會(huì)計(jì)算
  3. 這些運(yùn)算符可以大大減少代碼中的 null 檢查樣板代碼
  4. 在性能關(guān)鍵路徑上,? 比手動(dòng) null 檢查有輕微開(kāi)銷(xiāo)

這兩個(gè)運(yùn)算符是現(xiàn)代 C# 編程中處理 null 值的推薦方式,可以使代碼更簡(jiǎn)潔、更安全。

到此這篇關(guān)于C#中的? 和 ??運(yùn)算符詳解的文章就介紹到這了,更多相關(guān)C#運(yùn)算符? 和 ??內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c# mutex互斥量的深入解析

    c# mutex互斥量的深入解析

    本篇文章主要是對(duì)c#中的mutex互斥量進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • C#逐行讀取文本文件的幾種有效方法

    C#逐行讀取文本文件的幾種有效方法

    在C#中,我們可以使用各種方法來(lái)讀取和寫(xiě)入文本文件,本文主要給大家介紹了C#逐行讀取文本文件的幾種有效方法,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • 清除aspx頁(yè)面緩存的程序?qū)崿F(xiàn)方法

    清除aspx頁(yè)面緩存的程序?qū)崿F(xiàn)方法

    這篇文章主要介紹了清除aspx頁(yè)面緩存的程序?qū)崿F(xiàn)方法,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • C# 注冊(cè)表 操作實(shí)現(xiàn)代碼

    C# 注冊(cè)表 操作實(shí)現(xiàn)代碼

    Windows 操作系統(tǒng)的注冊(cè)表包含了很多有關(guān)計(jì)算機(jī)運(yùn)行的配置方式,打開(kāi)注冊(cè)表我們可以看到注冊(cè)表是按類(lèi)似于目錄的樹(shù)結(jié)構(gòu)組織的
    2009-07-07
  • C#讀取計(jì)算機(jī)CPU及HDD信息的方法

    C#讀取計(jì)算機(jī)CPU及HDD信息的方法

    這篇文章主要介紹了C#讀取計(jì)算機(jī)CPU及HDD信息的方法,涉及C#讀取計(jì)算機(jī)CPU及硬盤(pán)信息的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#使用Spire.PDF for .NET實(shí)現(xiàn)PDF轉(zhuǎn)SVG

    C#使用Spire.PDF for .NET實(shí)現(xiàn)PDF轉(zhuǎn)SVG

    在現(xiàn)代Web開(kāi)發(fā)和圖形處理中,對(duì)于文檔和圖像格式的靈活轉(zhuǎn)換需求日益增長(zhǎng),本文將深入探討如何利用強(qiáng)大的 Spire.PDF for .NET 庫(kù),準(zhǔn)確地將PDF文件轉(zhuǎn)換為SVG文件,感興趣的小伙伴可以了解下
    2025-09-09
  • 利用unity代碼C#封裝為dll的步驟分享

    利用unity代碼C#封裝為dll的步驟分享

    這篇文章主要給大家介紹了關(guān)于利用unity代碼C#封裝為dll的相關(guān)資料,文中通過(guò)圖文將實(shí)現(xiàn)的方法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • C#排序算法之快速排序

    C#排序算法之快速排序

    下面給出的代碼是以數(shù)組最后一個(gè)元素作為參考元素,這僅是參考元素選取的方式之一。
    2010-09-09
  • C#?xml序列化實(shí)現(xiàn)及遇到的坑

    C#?xml序列化實(shí)現(xiàn)及遇到的坑

    在C#中,當(dāng)我們需要將對(duì)象存儲(chǔ)到文件或通過(guò)網(wǎng)絡(luò)發(fā)送時(shí),我們可以使用XML序列化將C#對(duì)象轉(zhuǎn)換為XML文檔,以便于存儲(chǔ)、傳輸和還原,本文主要介紹了C#?xml序列化實(shí)現(xiàn)及遇到的坑,感興趣的可以了解一下
    2023-09-09
  • C# 裝箱和拆箱的知識(shí)回顧

    C# 裝箱和拆箱的知識(shí)回顧

    本篇文章主要介紹了C#的裝箱和拆箱的知識(shí)點(diǎn)回顧,對(duì)大家的學(xué)習(xí)和復(fù)習(xí)具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧
    2016-12-12

最新評(píng)論

新竹县| 开鲁县| 新沂市| 沭阳县| 漯河市| 六枝特区| 吴忠市| 栾城县| 库伦旗| 炎陵县| 开平市| 新干县| 晋宁县| 高阳县| 远安县| 哈尔滨市| 贡嘎县| 哈密市| 西藏| 兴义市| 教育| 光山县| 时尚| 察雅县| 南京市| 达拉特旗| 兴安县| 民勤县| 开鲁县| 秦安县| 驻马店市| 米林县| 滨海县| 尉氏县| 罗田县| 沁源县| 雅安市| 新巴尔虎左旗| 山西省| 敦煌市| 调兵山市|