你做不到 从文档中获取
IEnumerator<T>:
只要集合保持不变,枚举数将保持有效。如果对集合进行了更改(例如添加,修改或删除元素),则枚举数将无法恢复,并且其行为是不确定的。
替代方法是:
- 建立要删除的新项目列表,然后将其全部删除
- 使用普通的“ for”循环,并确保不要将同一元素重复两次或遗漏任何内容,请务必小心。(您说过您不想这样做,但是您尝试执行的操作将不起作用。)
- 建立一个仅包含您要保留的元素的新集合
这些选择的最后一个是类似LINQ的解决方案,您通常在其中编写:
var newList = oldList.Where(x => ShouldBeRetained(x)).ToList();
(
ShouldBeRetained当然,您希望使用什么逻辑。)
ToList()仅当您实际需要列表时才需要调用。这导致了更具说明性的代码,通常更易于阅读。我无法轻易地猜出您的原始循环是要做什么的(此刻似乎很奇怪),而如果您可以仅根据项目来表达逻辑,则可以更加清楚。



