示例代码:
textBox.Click += (s, e) => { ... };
textBox.Dispose ();
textBox = null;
textBox会被GC收集吗?
示例代码:
textBox.Click += (s, e) => { ... };
textBox.Dispose ();
textBox = null;
textBox会被GC收集吗?
最终,是的。当 GC 决定这样做时。
是的,它将被收集。仅当未删除对事件源的引用时,删除事件处理程序才重要。文本框是源,您将引用归零,所以没关系。
如果你做了这样的事情,你会遇到问题:
parent.Add(textBox);
parent.Click += textBox.HandleParentClick;
parent.Remove(textBox);
父级仍然在此范围内,因此事件对文本框的引用(通过其处理程序)也仍然存在,即使通过添加/删除对文本框的直接引用已被删除。