.NET 6新特性试用 | 模式匹配之Extended Property Patterns
生活随笔
收集整理的這篇文章主要介紹了
.NET 6新特性试用 | 模式匹配之Extended Property Patterns
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言
模式匹配是一種測試表達式以確定其是否具有某些特征的技術(shù)。
例如, 下面的Employee類和Manager類:
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實例變量的實際類型并且匹配其屬性,如下所示:
Employee?obj?=?new?Manager?{?Id=1,?Name="zhangsan",?Position="CEO"?}; if(obj?is?Manager?{?Position:?"CEO"?}?ceo) {Console.WriteLine(ceo.Name); };Extended Property Patterns
如果要使用模式匹配檢查變量嵌套的屬性,則書寫起來比價復(fù)雜,如下所示:
if(obj?is?Employee?{?Manager:?{?Name:"lisi",?Manager:{?Position:?"CEO"?}?}?}?employee)而在.NET 6中,我們可以使用.引用屬性的嵌套成員,這種方式稱為Extended Property Patterns(擴展屬性模式)。
將上面的代碼改寫后如下:
if(obj?is?Employee?{?Manager.Name:"lisi",?Manager.Manager.Position:?"CEO"?}?employee)另外,使用擴展屬性模式不僅可以引用類定義的嵌套屬性,同時還可以使用嵌套屬性原生類型的屬性,如下所示:
結(jié)論
需要注意的是,如果變量的Manager屬性為null,或者任何嵌套屬性為null 都不會得到NullReferenceException。因為在這里編寫模式是為了檢查對象是否匹配,而不是使用代碼直接訪問該屬性。
這意味著,如果Manager屬性為null,則模式{Manager.Name:"lisi"}不匹配,則上面if語句的條件計算結(jié)果為false,僅此而已。
利用Extended Property Patterns這種簡化的語法,可以使模式匹配表達式更易于閱讀,特別是對于嵌套較深的類型。
如果你覺得這篇文章對你有所啟發(fā),請幫忙點個贊或者在看
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的.NET 6新特性试用 | 模式匹配之Extended Property Patterns的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 极简实用的Asp.NetCore模块化框
- 下一篇: .NET 现代化动态 LINQ 库 Gr