日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 6新特性试用 | 模式匹配之Extended Property Patterns

發(fā)布時間:2023/12/4 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .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)

另外,使用擴展屬性模式不僅可以引用類定義的嵌套屬性,同時還可以使用嵌套屬性原生類型的屬性,如下所示:

if(obj?is?Employee?{?Manager.Name.Length:4?}?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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。