例如在此代码中:
void ButtonCreator()
{
Button elboton = new Button();
}
调用此方法后elboton
会发生什么?
答案 0 :(得分:5)
如果它们没有被其他对象(例如容器)引用,则它们变得无法访问并且有资格被垃圾收集器收集。这与创建任何其他对象相同。
请注意,System.Windows.Forms.Control
类(及其子类,如Button
)都实现了IDisposable
接口,因此最简单的方法是确保所有非托管资源与Button
相关联的是使用using
块,如下所示:
using(Button elboton = new Button()) {
// Do whatever you need to do
}
// elboton is now disposed
但是,无论您是否使用using
阻止,在GC运行之前,不会回收与该对象关联的任何托管资源。
答案 1 :(得分:0)
对它的所有引用都被破坏,反过来垃圾收集器最终会吞噬它。如果您将该按钮指定为存在于某个其他上下文中(添加一个超出此方法范围的引用),它将保留。
答案 2 :(得分:0)
该实例将没有参考,一段时间后GC将清理它......
答案 3 :(得分:0)
在您的示例中,当下一次GC迭代开始时,GC(垃圾收集器)将收集elboton
。这是因为在ButtonCreator()完成后它没有被引用。