为什么 .NET 设计人员创建这样的代码:Classes.Customer customer1 = new Classes.Customer();

Why .NET designer create code like this: Classes.Customer customer1 = new Classes.Customer();

我使用 C#、.NET 4.5.1、VS 2013。

任何人都可以准确地解释我为什么,如果我创建一个像这样的 UserControl,其中 属性 包含另一个 class:

public partial class CustomerSelect : UserControl
{
    public Classes.Customer Customer
    {
        get { return customer; }
        set { customer = value; }
    }
    private Classes.Customer customer;

    public CustomerSelect()
    {
        InitializeComponent();
        customer = new Classes.Customer();
    }        
}

当我将此控件放在 Windows 窗体上时,他会在设计器中生成该代码:

Classes.Customer customer1 = new Classes.Customer();
this.customer1 = new Classes.Customer();

及以下:

// 
// customerSelect1
// 
this.customerSelect1.Customer = customer1;

为什么他会自动创建一个新客户?我尝试使用 = null, = new Classes.Customer() 更改私有 属性 的初始化,删除我的控件、代码,再次添加,我总是得到相同的结果。

如果有人能解释我理解的错误,谢谢。

这是具有 getter 和 setter 的 public 属性 的正常行为,其在设计时的值不是 [默认值]。你必须告诉设计者不要序列化 ​​属性 并且不要在属性 window:

中显示它
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public Classes.Customer Customer
{
    get { return customer; }
    set { customer = value; }
}