.NET 6新特性试用 | 模式匹配之Extended Property Patterns
前言
模式匹配是一種測(cè)試表達(dá)式以確定其是否具有某些特征的技術(shù)。
例如, 下面的Employee類(lèi)和Manager類(lèi):
public?class?Employee {public?int?Id?{?get;?set;?}public?string?Name?{?get;?set;?}public?Manager??Manager?{?get;?set;?} }public?class?Manager?:?Employee {public?string?Position?{?get;?set;?} }我們可以使用模式匹配,檢查Employee實(shí)例變量的實(shí)際類(lèi)型并且匹配其屬性,如下所示:
Employee?obj?=?new?Manager?{?Id=1,?Name="zhangsan",?Position="CEO"?}; if(obj?is?Manager?{?Position:?"CEO"?}?ceo) {Console.WriteLine(ceo.Name); };Extended Property Patterns
如果要使用模式匹配檢查變量嵌套的屬性,則書(shū)寫(xiě)起來(lái)比價(jià)復(fù)雜,如下所示:
if(obj?is?Employee?{?Manager:?{?Name:"lisi",?Manager:{?Position:?"CEO"?}?}?}?employee)而在.NET 6中,我們可以使用.引用屬性的嵌套成員,這種方式稱(chēng)為Extended Property Patterns(擴(kuò)展屬性模式)。
將上面的代碼改寫(xiě)后如下:
if(obj?is?Employee?{?Manager.Name:"lisi",?Manager.Manager.Position:?"CEO"?}?employee)另外,使用擴(kuò)展屬性模式不僅可以引用類(lèi)定義的嵌套屬性,同時(shí)還可以使用嵌套屬性原生類(lèi)型的屬性,如下所示:
結(jié)論
需要注意的是,如果變量的Manager屬性為null,或者任何嵌套屬性為null 都不會(huì)得到NullReferenceException。因?yàn)樵谶@里編寫(xiě)模式是為了檢查對(duì)象是否匹配,而不是使用代碼直接訪(fǎng)問(wèn)該屬性。
這意味著,如果Manager屬性為null,則模式{Manager.Name:"lisi"}不匹配,則上面if語(yǔ)句的條件計(jì)算結(jié)果為false,僅此而已。
利用Extended Property Patterns這種簡(jiǎn)化的語(yǔ)法,可以使模式匹配表達(dá)式更易于閱讀,特別是對(duì)于嵌套較深的類(lèi)型。
如果你覺(jué)得這篇文章對(duì)你有所啟發(fā),請(qǐng)幫忙點(diǎn)個(gè)贊或者在看
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的.NET 6新特性试用 | 模式匹配之Extended Property Patterns的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 极简实用的Asp.NetCore模块化框
- 下一篇: 龙芯上市是自主路线被广泛认可的风向标