很多时候有一个清晰的方法,从集合中删除所有的项,这些项也被处理掉了。
喜欢,
toolStripMenuItem.DropDownItems.Clear();
就足够了,或者我应该像这样调用:
foreach (ToolStripItem item in toolStripMenuItem.DropDownItems)
{
toolStripMenuItem.DropDownItems.Remove(item);
item.Dispose();
}
编辑: ToolStripItem是一个例子而不是一个问题,对于那些说清楚就足够的人,我发现了另一个例子,TabControl也有项集合和清晰方法。但是TabControls可以有复杂的控件(至少我有),这些控件需要显式处理(即使它们在某个时刻由GC自动处理,因为它们占用大量内存)。我想最好的答案是divo注释来处理这些项,然后调用clear。
发布于 2009-12-28 19:27:21
在处理非托管内存、共享资源或大内存区域时,应该依靠Dispose()
调用。看起来不是这样的。
发布于 2009-12-28 19:28:50
调用Clear
不会释放这些项,但它会从集合中移除对这些项的引用。如果这是对项的唯一引用,它们将在某个时候被自动垃圾收集(您无法预测,但您可以使用GC
类进行控制)。
发布于 2009-12-28 19:25:02
我不这样认为,更重要的是,它可能会导致许多逻辑问题,因为您可能会在集合中引用该对象以供以后使用。如果您没有对该对象的引用,垃圾收集器将在以后释放该对象
https://stackoverflow.com/questions/1969024
复制相似问题