最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C# 對(duì)位模式

2023-01-14 22:22 作者:SunnieShine  | 我要投稿

1、語法

對(duì)位模式是將一個(gè)數(shù)據(jù)成員通過解構(gòu)方法來產(chǎn)生解構(gòu),來判斷屬性數(shù)據(jù)的過程。假設(shè)我們擁有這樣一個(gè)數(shù)據(jù)類型:

顯然這里的 XYPoint 里僅存的兩個(gè)數(shù)據(jù)成員。如果我們?cè)谀硞€(gè)時(shí)刻判斷數(shù)據(jù)信息的具體數(shù)值的時(shí)候,我們可能會(huì)使用如下的寫法:

在 C# 里,我們只要寫上一個(gè)自定義的解構(gòu)函數(shù),就可以對(duì)對(duì)象進(jìn)行解構(gòu)操作。我們寫一個(gè) Deconstruct 方法,然后帶有兩個(gè)參數(shù):xy,它們都是 out int 類型的。

通過這樣的賦值后,我們就可以通過這個(gè)解構(gòu)來完成數(shù)據(jù)的解構(gòu)了:

當(dāng)然,在模式匹配的時(shí)候,我們可以使用這樣的代碼對(duì)上面的寫法進(jìn)行簡化:

不過,這樣還不是很好看。因此 C# 還有這樣的對(duì)位模式匹配:

通過一對(duì)小括號(hào),我們可以實(shí)現(xiàn)對(duì)這個(gè)數(shù)據(jù)成員具體數(shù)值的檢測(cè)。至于這里為什么是小寫字母 xy,是因?yàn)榻鈽?gòu)函數(shù)的參數(shù)分別是 xy,這是一一對(duì)應(yīng)的。正是因?yàn)槿绱耍@個(gè)模式才叫做對(duì)位模式。其中,因?yàn)樗柚私鈽?gòu)函數(shù),而解構(gòu)后的對(duì)象分配使用的是一對(duì)小括號(hào)(var (x, y) = point; 這個(gè)語句),因此為了配合這個(gè)寫法,也用的是小括號(hào)。只是這里需要寫出解構(gòu)參數(shù)的名字。

稍微注意一點(diǎn)的是,C# 允許在同一個(gè)數(shù)據(jù)類型下定義多個(gè)解構(gòu)函數(shù),所以這正是為什么必須給出解構(gòu)參數(shù)名稱的原因。除非這個(gè)類型就這一個(gè)解構(gòu)函數(shù),那么我們都必須寫出解構(gòu)參數(shù)名。

2、主構(gòu)造器的對(duì)位模式

C# 9 和 C# 10 分別誕生了記錄類型和記錄結(jié)構(gòu)類型,它們必須綁定一個(gè)主構(gòu)造器位于聲明的頭部:

在使用模式匹配的時(shí)候,由于編譯器會(huì)自動(dòng)生成對(duì)應(yīng)的解構(gòu)函數(shù),因此我們可以直接對(duì)主構(gòu)造器使用對(duì)位模式匹配。

其中,小括號(hào) (Name: "Sunnie", Age: 25, _) 左側(cè)的數(shù)據(jù)類型類似于 obj is T tT,而小括號(hào)書寫出來的對(duì)位模式,則是 C# 允許的語法。它們甚至可以寫在一起。當(dāng)然,如果類型一樣就不必判斷類型了。

3、調(diào)用擴(kuò)展方法的對(duì)位模式

同時(shí),編譯器也能夠嗅探擴(kuò)展方法。換句話說,對(duì)位模式也允許擴(kuò)展方法的解構(gòu)函數(shù)。因此,C# 也允許調(diào)用擴(kuò)展方法的解構(gòu)函數(shù)來對(duì)位判斷元素信息。

于是我們可以使用這個(gè)方法對(duì)一個(gè) T[] 進(jìn)行解構(gòu):


C# 對(duì)位模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
九台市| 怀柔区| 化州市| 宁德市| 克什克腾旗| 锡林郭勒盟| 东平县| 桓台县| 高雄县| 乳山市| 阳原县| 孟连| 崇左市| 弥勒县| 扬中市| 文成县| 嵊泗县| 赤峰市| 库尔勒市| 克山县| 托克托县| 和平区| 黎平县| 禹城市| 鄂伦春自治旗| 宁阳县| 炉霍县| 宜黄县| 晋州市| 攀枝花市| 闽清县| 长葛市| 云安县| 淳化县| 丘北县| 宜阳县| 禄丰县| 东乡族自治县| 山东省| 旬邑县| 建水县|