亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

C# 中的模式匹配遞歸模式如何用法?

畫(huà)卷琴夢(mèng)
發(fā)布: 2025-10-17 11:01:01
原創(chuàng)
313人瀏覽過(guò)
<p>遞歸模式在C# 9+中用于解構(gòu)復(fù)雜對(duì)象,支持屬性和位置匹配,適用于record類(lèi)型與switch表達(dá)式,可實(shí)現(xiàn)嵌套結(jié)構(gòu)的精準(zhǔn)匹配,提升代碼可讀性與安全性。</p>

c# 中的模式匹配遞歸模式如何用法?

在 C# 中,遞歸模式(Recursive Patterns)是 C# 9 及以上版本引入的一種強(qiáng)大功能,主要用于解構(gòu)復(fù)雜對(duì)象并檢查其內(nèi)部結(jié)構(gòu)。它常用于 switch 表達(dá)式、is 表達(dá)式中,特別適合處理嵌套的對(duì)象或記錄類(lèi)型。

基本語(yǔ)法

遞歸模式的基本形式是:

類(lèi)型(模式) 或者 類(lèi)型 { 屬性模式 }

它可以結(jié)合屬性解構(gòu)和嵌套模式來(lái)匹配對(duì)象的結(jié)構(gòu)。

使用記錄類(lèi)型進(jìn)行遞歸匹配

C# 的 record 類(lèi)型天然支持解構(gòu),非常適合遞歸模式。例如:

public record Person(string Name, int Age, Address Address);
public record Address(string City, string Country);

var person = new Person("Alice", 30, new Address("Beijing", "China"));

if (person is Person { Name: "Alice", Address: Address { City: "Beijing" } })
{
????Console.WriteLine("匹配成功");
}

這里通過(guò) Person { Address: Address { City: "Beijing" } } 實(shí)現(xiàn)了對(duì)嵌套對(duì)象的遞歸匹配。

無(wú)階未來(lái)模型擂臺(tái)/AI 應(yīng)用平臺(tái)
無(wú)階未來(lái)模型擂臺(tái)/AI 應(yīng)用平臺(tái)

無(wú)階未來(lái)模型擂臺(tái)/AI 應(yīng)用平臺(tái),一站式模型+應(yīng)用平臺(tái)

無(wú)階未來(lái)模型擂臺(tái)/AI 應(yīng)用平臺(tái)35
查看詳情 無(wú)階未來(lái)模型擂臺(tái)/AI 應(yīng)用平臺(tái)

switch 表達(dá)式中使用遞歸模式

遞歸模式在 switch 表達(dá)式中也非常實(shí)用:

string result = person switch
{
????Person { Name: var name, Age: < 18 } => $"{name} 是未成年人",
????Person { Name: var name, Address: Address { Country: "China" } } => $"{name} 來(lái)自中國(guó)",
????_ => "其他情況"
};

這個(gè)例子中,根據(jù)年齡和地址信息進(jìn)行分層判斷,邏輯清晰且代碼簡(jiǎn)潔。

結(jié)合位置解構(gòu)使用

如果類(lèi)型定義了 Deconstruct 方法,也可以用位置模式:

public class Point
{
????public int X { get; set; }
????public int Y { get; set; }

????public void Deconstruct(out int x, out int y) => (x, y) = (X, Y);
}

var point = new Point { X = 1, Y = 2 };

if (point is (1, 2))
{
????Console.WriteLine("點(diǎn)位于 (1, 2)");
}

這種寫(xiě)法也屬于遞歸模式的一種,可用于自定義類(lèi)型的解構(gòu)匹配。

基本上就這些。遞歸模式讓 C# 的模式匹配更接近函數(shù)式語(yǔ)言的風(fēng)格,尤其配合 record 和不可變數(shù)據(jù)時(shí),代碼更安全、易讀。只要類(lèi)型支持屬性訪(fǎng)問(wèn)或解構(gòu),就能用遞歸模式層層深入匹配。不復(fù)雜但容易忽略細(xì)節(jié),比如屬性名拼寫(xiě)、類(lèi)型一致性等。

以上就是C# 中的模式匹配遞歸模式如何用法?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開(kāi)源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線(xiàn)php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)