处理完一个物体后会发生什么?

时间:2014-04-19 08:08:10

标签: c# dispose

我的Label上有一个Form。当我调用Dispose()方法时,对象会从Form中删除。但我仍然可以设置它的属性。我为对象调用Dispose()方法后会发生什么。我可以恢复它并再次显示它吗?

public void MyMethod()
{
     label1.Dispose();
     label1.Text = "Test";
     //No error happens
}
处理后我可以读取一些属性,如Left属性。这意味着标签仍然存在于某个地方。我如何完全删除它?

3 个答案:

答案 0 :(得分:10)

在这种情况下会发生的事情是控件的句柄被销毁(从而从其父控件中移除)。处理后,无法再将其添加到可见显示中。但是,对象本身(如类实例中)仍然存在,因此可以设置大多数属性。 (有些会给出一个对象处理异常,比如尝试获取Handle属性)

通常,仍然可以设置哪些属性,取决于对象的实现(IDispose接口),以及它检查它是否被处置的位置。

答案 1 :(得分:-1)

dispose方法不会从内存中删除对象。它只告诉垃圾收集器释放它。垃圾收集器将确定何时需要释放它。 这是一个令人困惑的话题,我也不太了解。这是关于dispose和finalize的好文章。 http://www.devx.com/dotnet/Article/33167

答案 2 :(得分:-1)

obj.Dispose()命令GC销毁该对象。如果您在obj.Dispose()之后尝试更改其数据,则不会发生任何事情。