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

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

概述在C#7.0中,我可以为我的类声明以下解构器: public class Customer{ public string FirstName { get; } public string LastName { get; } public string Email { get; } public Customer(string firstName, string 在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.此外,您不能在两个元组中重新声明firstname和lastname.进行这些更改,以下几行代码都编译得很好:
var customer = new Customer("a","b");(string firstname1,string lastname1,string company) = customer;(string firstname2,string lastname2) = customer;
总结

以上是内存溢出为你收集整理的是否有可能在C#7.0中重载解构器?全部内容,希望文章能够帮你解决是否有可能在C#7.0中重载解构器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1239118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存