是否有可能在C#7.0中重载解构器?

在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;
    }
}

我想在desconstructor中使用我们的变量而不是直接返回一个元组的想法是,你可以有不同的解构器重载。 但是,我似乎无法将对象解构为三个变量。 我只能将其解构为两个变量。

例如,这不会编译:

(string firstName, string lastName, string company) = customer;

我得到这个错误:

“不能将'2'元素的元素解构成'3'变量。”

但是这确实并且有效:

(string firstName, string lastName) = customer;

我错过了什么?


你已经调用了你的方法, Deconstructor ,而不是Deconstruct 。 另外,你不能在这两个元组中重新声明firstNamelastName 。 做出这些改变,并且以下代码行都可以编译得很好:

var customer = new Customer("a", "b");
(string firstName1, string lastName1, string company) = customer;
(string firstName2, string lastName2) = customer;
链接地址: http://www.djcxy.com/p/38151.html

上一篇: Is it possible to overload deconstructors in C# 7.0?

下一篇: Shortest command to calculate the sum of a column of output on Unix?