在尝试修改集合之前,如何判断我是否正在迭代集合?

时间:2015-02-02 20:23:49

标签: c#

我想只在我当前没有迭代它时才从集合中删除一个项目。

有没有办法知道在不使用异常处理作为逻辑的一部分的情况下从集合中删除项目是安全的?

1 个答案:

答案 0 :(得分:3)

不适用于内置系列。

内部大多数集合都有某种版本信息,允许相应的迭代器检查集合是否被修改,但是你找不到“此集合上的迭代器列表”。

您可以创建自己的集合类型,为您提供此类信息,但要非常小心处理多线程情况(如果需要)并弄清楚如何处理诸如“获取迭代器,更改集合,开始迭代”之类的极端情况或“得到了迭代器,从不使用它,集合被阻止了变化”。