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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中的解构

發布時間:2023/12/4 C# 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中的解构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解構是將一個對象分割成若干部分并將其存儲到新的變量中。在 C# 中,解構可以方便地一次性將一個對象的多個成員的值存儲到多個變量中。

1解構元組

元組為方法返回多個值提供了便捷,無需創建額外的類型來承載返回的值。例如,下面這個方法使用元組返回兩個值:

public?static (string, string, int) GetPerson() {var firstName = "Liam";var lastName = "Wang";var age = 18;return (firstName, lastName, age); }

對于檢索這個方法返回元組的各成員,如果不使用解構,我們可能需要這樣寫:

var person = GetPerson();var firstName = person.Item1; var lastName = person.Item2; var age = person.Item3;

使用解構,則可以一次性將元組的各成員分別賦值給不同的變量,可以這樣寫:

(string firstName, string lastName, int age) = GetPerson();// firstName = "Liam" // lastName = "Wang" // age = 18

也可以使用 var 自動推斷各個變量的類型:

var (firstName, lastName, age) = GetPerson();// firstName = "Liam" // lastName = "Wang" // age = 18

元組的解構是基于成員的位置順序來的,即將 Item1 賦給第一上變量,將 Item2 賦給第二個變量……。

但是,一旦你使用解構檢索元組,你就必須處理它的各個成員。我們可以使用 棄元(_)來處理我們不關心的成員,只獲取元組中的我們需要的部分成員。例如:

var (firstName, _, _) = GetPerson();// firstName = "Liam"

2解構類

我們也可以對類進行解構,并像對元組那樣訪問特定的字段。但為了實現這個目的,我們需要給類添加一個 Deconstruct() 方法,例如:

public?class?Person {public?string FirstName { get; set; }public?string LastName { get; set; }public?int Age { get; set; }public?void?Deconstruct(out?string firstName, out?string lastName, out?int age){firstName = FirstName;lastName = LastName;age = Age;} }

然后可以和元組對象一樣使用解構:

var person = new Person { FirstName = "Liam", LastName = "Liam", Age = 18 };var (firstName, lastName, age) = person;

或只關心部分成員:

...var (firstName, _, _) = person;

Deconstruct() 方法允許重載,比如:

...public?void?Deconstruct(out?string firstName, out?string lastName) =>(firstName, lastName) = (FirstName, LastName);public?void?Deconstruct(out?string firstName, out?string lastName, out?int age) =>(firstName, lastName, age) = (FirstName, LastName, Age);

它會根據解構時的聲明的變量數調用對應的 Deconstruct() 方法。

...var (firstName, lastName) = person;var (firstName, lastName, age) = person;

也可以通過靜態擴展方法的方式給類的實例添加 Deconstruct() 方法,比如:

public?static?class?PersonExtensions {public?static?void?Deconstruct(this Person person,out?string firstName, out?string lastName, out?int age){firstName = person.FirstName;lastName = person.LastName;age = person.Age;} }

3解構記錄

C# 9 的記錄(Record)類型和元組一樣,可以根據成員順序直接解構。例如:

record?Person(string?FirstName, string?LastName, int?age);static?void?Main(string[] args) {var person = new Person("Liam", "Wang", 18);var (firstName, lastName, age) = person; }// firstName = "Liam" // lastName = "Wang" // age = 18

記錄類型既可以和類一樣有具名成員,也可以和元組一樣有基于成員順序的可解構特性,不需要單獨定義 Deconstruct() 方法。

總結

以上是生活随笔為你收集整理的C#中的解构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 奇米一区二区三区 | 国产三区四区视频 | 亚洲aⅴ在线观看 | 日韩在线观看视频一区二区 | 在线日韩| 五月天中文字幕在线 | 亚洲免费视频播放 | 成人激情在线观看 | 欧美日韩中出 | 日本一区二区免费高清视频 | 亚洲综合日韩精品欧美综合区 | 91影音| 国产欧美日韩中文字幕 | 91高清无打码 | www.操操操 | 久久久久亚洲视频 | 在厨房拨开内裤进入毛片 | 影院一区 | 在线观看免费高清在线观看 | 亚洲爆乳无码精品aaa片蜜桃 | 人人爽人人爽人人片av | 在线看国产 | 国产在线一二区 | 免费一级淫片aaa片毛片a级 | 乐播av一区二区三区 | 不卡在线一区二区 | 色综合av综合无码综合网站 | 4444亚洲人成无码网在线观看 | avtt一区| 免费裸体视频网站 | 日皮视频在线观看 | 九一毛片 | 女人高潮娇喘1分47秒 | 不卡的av在线免费观看 | 在线播放黄色av | 可以直接看av的网址 | 美乳人妻一区二区三区 | 亚洲经典一区二区三区 | 天堂中文在线免费观看 | 天天干天天干天天干 | 国产欧美一区二区三区在线看蜜臂 | 九九九网站 | 国产欧美中文字幕 | 96精品视频 | 人人九九 | 男女一进一出视频 | 国产精品无码免费专区午夜 | 国产精选第一页 | 欧美交换配乱吟粗大25p | 国产麻豆一区二区三区 | 别揉我奶头一区二区三区 | 婷婷六月色| 国产精品tv | 日韩中文字幕视频 | 国产全是老熟女太爽了 | 成人在线视频网站 | 色老板精品凹凸在线视频观看 | 女女调教被c哭捆绑喷水百合 | 久久久涩 | 国产特级黄色录像 | 激情五月婷婷丁香 | 亚洲成人av免费 | 国产精品扒开腿做爽爽 | 亚洲欧美色视频 | 风间由美一区二区三区 | 91欧美激情一区二区三区成人 | 亲切的金子餐桌片段的金子 | 老司机性视频 | 98超碰在线| 青青在线视频 | 亚洲射射射 | 免费视频一区二区 | a级片免费看| 亚洲精品久久久久久国产精华液 | 黄色一级一片免费播放 | 国产视频一二三四区 | 日本熟伦人妇xxxx | 欧美自拍偷拍 | 国产网站免费 | 97超碰人 | 麻豆乱码国产一区二区三区 | av影库 | 四虎国产在线观看 | 69xx视频在线观看 | 污污视频网站在线免费观看 | 国产三区在线观看 | 波多野结衣加勒比 | 国产精品探花一区二区在线观看 | 成人动漫亚洲 | 久久综合精品国产二区无码不卡 | 亚洲一级影院 | 日本欧美一级 | 欧美日韩成人在线视频 | 日本美女日批视频 | 精品国产一区二区三区久久狼黑人 | 一区二区三区在线视频免费观看 | 人人干干人人 | 国产区高清| 超碰在线亚洲 |