list.remove()偶数的例外情况

use*_*941 2 c#

我有一个数字列表,我想删除所有偶数.我认为我的代码是正确的:

System.Collections.Generic.List<int> list = ...
foreach (int i in list)
{
  if (i % 2 == 0)
    list.Remove(i);
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到一个例外.我究竟做错了什么?

Gab*_*abe 10

你不能在一个foreach循环中修改一个集合,也就是说,你不能从一个list循环中迭代的项目中删除一个项目foreach.

而不是foreach循环,只需使用这一行代码:

list.RemoveAll(i => i % 2 == 0);
Run Code Online (Sandbox Code Playgroud)

  • 更一般地说,你不能在`foreach`循环中修改集合. (2认同)