我用c#编程。我正在尝试从List<>
中删除某个项目,但是当我删除该项目时,我收到此异常错误:
发生了'System.InvalidOperationException'类型的异常 mscorlib.dll但未在用户代码中处理
其他信息:收集已修改;枚举操作可能无法执行。
这是我的代码:
foreach (Target t in targetList)
{
if (t.CalculateDistance(t.EndX, t.EndY) <= 5)
{
targetList.Remove(t);
}
}
我在第一行得到例外。为什么我看到这个错误?或者我该如何解决?
答案 0 :(得分:12)
您遇到的问题是您无法修改通过它进行的收集。 您可以使用linq:
来解决这个问题targetList.RemoveAll(t => t.CalculateDistance(t.EndX, t.EndY) <= 5);
答案 1 :(得分:1)
试试这个:
var needdelete = new List<Target>();
foreach (Target t in targetList)
{
if (t.CalculateDistance(t.EndX, t.EndY) <= 5)
{
needdelete.Add(t);
}
}
targetlist.RemoveRange(needdelete);