国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# 7.0中解構功能詳解

2019-10-29 19:59:32
字體:
來源:轉載
供稿:網友

本文為大家分享了C# 7.0中的解構功能,供大家參考,具體內容如下

解構元組

  C#7.0新增了諸多功能,其中有一項是新元組(ValueTuple),它允許我們可以返回多個值,并且配合解構能更加方便的進行工作,如下面例子

static void Main(string[] args){ (var name, var age) = GetUser(); Console.WriteLine($"name:{name}/nage:{age}");}public static (string name,int age) GetUser(){ return ("張三", 11);}

可以看到解構元組可以寫出優雅的代碼,并且可以使用類型推斷,但在這里解構元組并不是重點,所以不過多關注,下面說一個有趣的功能

解構對象

  解構能力并不是只能解構元組,他還有一個更加有意思的功能,就是解構對象。是不是聽起來挺有意思。

static void Main(string[] args){ var user = new User {  Name = "張三",  Age = 11,  Email = "zhangsan@126.com",     Sex="男" }; (var name, var email) = user; Console.WriteLine($"name:{name}/nemail:{email}");}

上面代碼是不是很驚奇,反正我第一次看到時特別驚訝,也感覺特別有意思,那么這到底怎么實現的呢,其實只是在類中添加一個解構函數(Deconstruct)就可以,解構參數方法名稱必須是Deconstruct,返回值必須是void,參數列表必須是out

public class User{  public string Name { get; set; }  public string Email { get; set; }  public int Age { get; set; }  public string Sex { get; set; }  //解構函數  public void Deconstruct(out string name,out string email)  {   name = Name;   email = Email;  }}

是不是感覺特別簡單.

解構函數還支持重載

class Program{ static void Main(string[] args) {  var user = new User  {   Name = "張三",   Age = 11,   Email = "zhangsan@126.com",      Sex="男"  };  (var name1, var email1) = user;  Console.WriteLine($"name:{name1}/temail:{email1}");  (var name2,var age2, var email2) = user;  Console.WriteLine($"name:{name2}/tage:{age2}/temail:{email2}"); }} public class User{ public string Name { get; set; } public string Email { get; set; } public int Age { get; set; }   public string Sex { get; set; } //解構函數 public void Deconstruct(out string name,out string email) {  name = Name;  email = Email; } //結構函數重載 public void Deconstruct(out string name,out int age,out string email) {  name = Name;  age = Age;  email = Email; }}

但是解構不支持參數一致的重載

C#,解構

哪怕參數類型不一致

C#,解構

C#,解構

感覺像參數類型推斷錯誤,但是  

C#,解構

所以解構函數并不參數數量相同的重載,哪怕參數類型不一致。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰察布市| 宣化县| 巴楚县| 双桥区| 贡觉县| 蓬莱市| 车险| 外汇| 南阳市| 贵定县| 舟曲县| 杭锦后旗| 石楼县| 会同县| 南平市| 青田县| 黄大仙区| 剑阁县| 巩义市| 新民市| 广安市| 南通市| 民乐县| 漳州市| 库尔勒市| 亳州市| 井冈山市| 衡南县| 芷江| 双柏县| 沙湾县| 油尖旺区| 和政县| 揭西县| 壤塘县| 稷山县| 湘潭市| 泸西县| 扎赉特旗| 德州市| 南川市|