首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >调用Clear是否也会处理这些项?

调用Clear是否也会处理这些项?
EN

Stack Overflow用户
提问于 2009-12-28 19:23:16
回答 3查看 16.6K关注 0票数 22

很多时候有一个清晰的方法,从集合中删除所有的项,这些项也被处理掉了。

喜欢,

toolStripMenuItem.DropDownItems.Clear();

就足够了,或者我应该像这样调用:

foreach (ToolStripItem item in toolStripMenuItem.DropDownItems)
{
  toolStripMenuItem.DropDownItems.Remove(item);
  item.Dispose();
}

编辑: ToolStripItem是一个例子而不是一个问题,对于那些说清楚就足够的人,我发现了另一个例子,TabControl也有项集合和清晰方法。但是TabControls可以有复杂的控件(至少我有),这些控件需要显式处理(即使它们在某个时刻由GC自动处理,因为它们占用大量内存)。我想最好的答案是divo注释来处理这些项,然后调用clear。

EN

回答 3

Stack Overflow用户

发布于 2009-12-28 19:27:21

在处理非托管内存、共享资源或大内存区域时,应该依靠Dispose()调用。看起来不是这样的。

票数 2
EN

Stack Overflow用户

发布于 2009-12-28 19:28:50

调用Clear不会释放这些项,但它会从集合中移除对这些项的引用。如果这是对项的唯一引用,它们将在某个时候被自动垃圾收集(您无法预测,但您可以使用GC类进行控制)。

票数 2
EN

Stack Overflow用户

发布于 2009-12-28 19:25:02

我不这样认为,更重要的是,它可能会导致许多逻辑问题,因为您可能会在集合中引用该对象以供以后使用。如果您没有对该对象的引用,垃圾收集器将在以后释放该对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1969024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档