你做不到 从文档中获取IEnumerator<T>
:
只要集合保持不变,枚举数将保持有效。如果对集合进行了更改(例如添加,修改或删除元素),则枚举数将无法恢复,并且其行为是不确定的。
替代方法是:
这些选择的最后一个是类似LINQ的解决方案,您通常在其中编写:
var newList = oldList.Where(x => ShouldBeRetained(x)).ToList();
(ShouldBeRetained
当然,您希望使用什么逻辑。)ToList()
仅当您实际需要列表时才需要调用。这导致了更具说明性的代码,通常更易于阅读。我无法轻易地猜出您的原始循环是要做什么的(此刻似乎很奇怪),而如果您可以仅根据项目来表达逻辑,则可以更加清楚。