如何处理C#中的控件列表

时间:2014-11-26 06:58:11

标签: c# memory destructor

我有一个控件列表,即我的自定义表单中的列表。当我向窗体添加一些控件时,同时我将相同的控件添加到列表中。我应该清理清单吗?在配置?否则,我的控件不会被销毁? (我是C ++人)

2 个答案:

答案 0 :(得分:1)

如果列表的唯一引用位于Form本身,那么您不需要清除List。当表单被垃圾收集时,也将收集List(也是列表中的控件)。

如果您在问题中的表单之外引用了该列表,那么您需要Clear列表,否则在List本身之前不会收集列表中的控件收集。

另请注意,列表中的控件将在表单处理后立即处理(假设在表单中添加了对控件的相同引用)。但Dispose和Garbage Collection是两回事。

答案 1 :(得分:0)

仅当控件添加到Form的控件集合中时(即如果它们是控件树的一部分),Form才会处理控件。如果您只是将控件作为Form类的成员而不是Control树的一部分,那么它们将不会被处理掉。当然,如果没有代码示例,就无法分辨出您的情况。另请注意,Dispose与事件处理程序无关,即使调用了Dispose,也可能导致内存泄漏(或者更确切地说是对象泄漏)。