This question already has answers here:
How to remove elements from a generic list while iterating over it?

(28个答案)


7年前关闭。




我试图从ArrayList中删除一个项目,但出现此异常:Collection was modified; enumeration operation may not execute.
有任何想法吗?

最佳答案

您要在foreach期间删除项目,是吗?简单地说,你做不到。这里有一些常用选项:

  • List<T>RemoveAll与谓词
  • 一起使用
  • 按索引向后迭代,删除匹配项
    for(int i = list.Count - 1; i >= 0; i--) {
        if({some test}) list.RemoveAt(i);
    }
    
  • 使用foreach,并将匹配项放入第二个列表中;现在枚举第二个列表,并从第一个列表中删除那些项(如果您明白我的意思)
  • 09-30 14:14
    查看更多