如何正确销毁临时对象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

如何正确销毁临时对象c#

在处理表单时,这不会影响您的current_customer,因为它与表单无关。当您处理表单时只释放一个对实例current_customers的引用,但只要存在引用(例如在主应用程序中),实际实例就会进一步存在。因此,它仍然有其价值。

编辑:也许你可以在增加计数的地方显示更多的代码。