在C# 7.0中,我可以为我的类声明以下解构函数:
public class Customer
{
public string FirstName { get; }
public string LastName { get; }
public string Email { get; }
public Customer(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public void Deconstructor(out string firstName, out string lastName, out string company)
{
firstName = FirstName;
lastName = LastName;
company = "Nop-Templates";
}
public void Deconstructor(out string firstName, out string lastName)
{
firstName = FirstName;
lastName = LastName;
}
}我认为在解构函数中使用变量而不是直接返回元组的想法是为了让解构函数有不同的重载。但是,我似乎无法将对象解构为三个变量。我只能将它解构为两个变量。
例如,这不能编译:
(string firstName, string lastName, string company) = customer;我得到了这个错误:
“无法将”%2“元素的元组解构为”%3“变量。”
但这确实是可行的:
(string firstName, string lastName) = customer;我遗漏了什么?
发布于 2017-01-30 17:58:47
您调用的方法是Deconstructor,而不是Deconstruct。此外,您不能在两个元组中重新声明firstName和lastName。对这些进行更改,下面的代码行都可以很好地编译:
var customer = new Customer("a", "b");
(string firstName1, string lastName1, string company) = customer;
(string firstName2, string lastName2) = customer;https://stackoverflow.com/questions/41932624
复制相似问题