C# 7.0中解构功能详解

2020-01-05 09:14:51王冬梅

解构函数还支持重载


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#,解构