C# 字段变量的行为不符合预期
我正在尝试将项目添加到我的事件处理程序btnClone\u Click中的(客户)。我很难理解为什么Add方法在for循环迭代时表现不正确-列表保持计数为1,并在调用Add方法时覆盖自身 如果我声明自定义列表的本地对象(abc),则此对象的行为正确,并存储所有克隆C# 字段变量的行为不符合预期,c#,C#,我正在尝试将项目添加到我的事件处理程序btnClone\u Click中的(客户)。我很难理解为什么Add方法在for循环迭代时表现不正确-列表保持计数为1,并在调用Add方法时覆盖自身 如果我声明自定义列表的本地对象(abc),则此对象的行为正确,并存储所有克隆 private Customer customer; private List<Customer> customers; private void Form1_Load(object sender, System.E
private Customer customer;
private List<Customer> customers;
private void Form1_Load(object sender, System.EventArgs e)
{
customer = new Customer("John", "Mendez", "jmendez@msysco.com");
lblCustomer.Text = customer.GetDisplayText();
}
private void btnClone_Click(object sender, EventArgs e)
{
List<Customer> abc = new List<Customer>();
for (int i = 0; i < 5; i++)
{
customers = new List<Customer>();
Customer cust = (Customer)customer.Clone();
customers.Add(cust);
abc.Add(cust);
}
}
私人客户;
私人名单客户;
私有void Form1_加载(对象发送方,System.EventArgs e)
{
客户=新客户(“约翰”、“门德斯”jmendez@msysco.com");
lblCustomer.Text=customer.GetDisplayText();
}
私有void btnClone\u单击(对象发送者,事件参数e)
{
列表abc=新列表();
对于(int i=0;i<5;i++)
{
客户=新列表();
Customer cust=(Customer)Customer.Clone();
添加(cust);
abc.Add(客户);
}
}
因为您正在初始化循环中的客户
字段
customers = new List<Customer>();
客户=新列表();
我认为您应该将该行移到
Form1\u Load
函数内部或仅在需要时初始化的其他位置。每次迭代都会生成一个新列表并在其中添加一项。所以看起来你的清单上只有最后一项了。因此,您必须使用更改按钮事件
private void btnClone_Click(object sender, EventArgs e)
{
List<Customer> abc = new List<Customer>();
customers = new List<Customer>();
for (int i = 0; i < 5; i++)
{
Customer cust = (Customer)customer.Clone();
customers.Add(cust);
abc.Add(cust);
}
}
private void btnClone\u单击(对象发送者,事件参数e)
{
列表abc=新列表();
客户=新列表();
对于(int i=0;i<5;i++)
{
Customer cust=(Customer)Customer.Clone();
添加(cust);
abc.Add(客户);
}
}
对不起,我看到了错误。我一直在循环中重新初始化列表。谢谢,我在提交问题后就注意到了。这个过程可能是我调试的新工具。