在C#中迭代时安全地移除列表元素
在迭代过程中修改列表可能会导致问题,例如令人头疼的“集合已修改;枚举操作可能无法执行”异常。但是,有一些技术可以在迭代过程中有效地移除元素。
使用for循环反向迭代
一种方法是使用for循环反向迭代列表。这可以防止破坏集合的索引位置:
for (int i = safePendingList.Count - 1; i >= 0; i--) { // 处理元素 // safePendingList.RemoveAt(i); }
RemoveAll方法
另一种选择是使用带有谓词的RemoveAll方法来检查每个元素:
safePendingList.RemoveAll(item => item.Value == someValue);
示例
考虑以下整数列表:
var list = new List<int>(Enumerable.Range(1, 10));
移除前:
Console.WriteLine("移除前:"); list.ForEach(i => Console.WriteLine(i));
输出:
<code>1 2 3 4 5 6 7 8 9 10</code>
移除后:
list.RemoveAll(i => i > 5); Console.WriteLine("移除后:"); list.ForEach(i => Console.WriteLine(i));
输出:
<code>1 2 3 4 5</code>
这演示了如何从列表中移除大于5的元素。
以上是在C#中迭代时,如何将元素安全地从列表中删除?的详细内容。更多信息请关注PHP中文网其他相关文章!