我的Label
上有一个Form
。当我调用Dispose()
方法时,对象会从Form
中删除。但我仍然可以设置它的属性。我为对象调用Dispose()
方法后会发生什么。我可以恢复它并再次显示它吗?
public void MyMethod()
{
label1.Dispose();
label1.Text = "Test";
//No error happens
}
处理后我可以读取一些属性,如Left属性。这意味着标签仍然存在于某个地方。我如何完全删除它?
答案 0 :(得分:10)
在这种情况下会发生的事情是控件的句柄被销毁(从而从其父控件中移除)。处理后,无法再将其添加到可见显示中。但是,对象本身(如类实例中)仍然存在,因此可以设置大多数属性。 (有些会给出一个对象处理异常,比如尝试获取Handle属性)
通常,仍然可以设置哪些属性,取决于对象的实现(IDispose接口),以及它检查它是否被处置的位置。
答案 1 :(得分:-1)
dispose方法不会从内存中删除对象。它只告诉垃圾收集器释放它。垃圾收集器将确定何时需要释放它。 这是一个令人困惑的话题,我也不太了解。这是关于dispose和finalize的好文章。 http://www.devx.com/dotnet/Article/33167
答案 2 :(得分:-1)
obj.Dispose()
命令GC销毁该对象。如果您在obj.Dispose()
之后尝试更改其数据,则不会发生任何事情。