如何正确销毁临时对象c#
本文关键字:临时对象 何正确 | 更新日期: 2023-09-27 18:30:13
我需要帮助创建和销毁对象或对象的生命周期。问题是,在处理表单后,临时对象不会被删除,并且和对象的关系仍然存在。我做错了什么?我需要以某种方式重写dispose方法或析构函数吗?如何正确销毁临时对象?谢谢
产品形式:
private Product T = null;
public ProductForm(Customer cust)
{
InitializeComponent();
T = new Product();
T.Customer = cust;
}
Public CopyProducts(List<Product> copy_from)
{
Foreach(Product Temp1 in copy_from)
{
Product Temp2 = new Product();
Temp2.Customer = T.Customer;
Temp2.Count = Temp1.Count;
Temp2.Delivery = Temp1. Delivery;
…
cDB.Product.InsertOnSubmit(Temp2);
cDB.SubmitChanges();
}
}
private void OKButton_Click(object sender, EventArgs e)
{
T.Count = …
…
cDB.Product.InsertOnSubmit(T);
cDB.SubmitChanges();
}
private void CancelButton_Click(object sender, EventArgs e)
{
this.Close();
}
主要形式的测试代码:
MessageBox.Show(current_customer.Product.Count().ToString()); // ->>> 10
ProductForm prodform = new ProductForm(current_customer);
prodform.ShowDialog();
prodform.Dispose();
// ->>> after cancel button clicked should be 10 but it shouws 11
MessageBox.Show(current_customer.Product.Count().ToString()); // ->>> 11 instead of 10
和
MessageBox.Show(current_customer.Product.Count().ToString()); // ->>> 10
ProductForm prodform = new ProductForm(current_customer);
prodform.CopyProducts(list_of_products);
prodform.Dispose();
MessageBox.Show(current_customer.Product.Count().ToString()); // ->>> 11 instead of 10
在处理表单时,这不会影响您的current_customer,因为它与表单无关。当您处理表单时只释放一个对实例current_customers的引用,但只要存在引用(例如在主应用程序中),实际实例就会进一步存在。因此,它仍然有其价值。
编辑:也许你可以在增加计数的地方显示更多的代码。