首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C# 7.0中可以重载解构函数吗?

在C# 7.0中可以重载解构函数吗?
EN

Stack Overflow用户
提问于 2017-01-30 17:35:28
回答 1查看 346关注 0票数 7

在C# 7.0中,我可以为我的类声明以下解构函数:

代码语言:javascript
复制
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;
    }
}

我认为在解构函数中使用变量而不是直接返回元组的想法是为了让解构函数有不同的重载。但是,我似乎无法将对象解构为三个变量。我只能将它解构为两个变量。

例如,这不能编译:

代码语言:javascript
复制
(string firstName, string lastName, string company) = customer;

我得到了这个错误:

“无法将”%2“元素的元组解构为”%3“变量。”

但这确实是可行的:

代码语言:javascript
复制
(string firstName, string lastName) = customer;

我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-01-30 17:58:47

您调用的方法是Deconstructor,而不是Deconstruct。此外,您不能在两个元组中重新声明firstNamelastName。对这些进行更改,下面的代码行都可以很好地编译:

代码语言:javascript
复制
var customer = new Customer("a", "b");
(string firstName1, string lastName1, string company) = customer;
(string firstName2, string lastName2) = customer;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41932624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档