首页 >后端开发 >C++ >在C#迭代期间,如何将元素安全地从列表中删除?

在C#迭代期间,如何将元素安全地从列表中删除?

Linda Hamilton
Linda Hamilton原创
2025-01-31 01:56:09185浏览

How Can I Safely Remove Elements from a List During Iteration in C#?

>在迭代期间有效从C列表中删除元素 >在使用标准方法迭代时修改列表通常会导致

>错误。 本文提出了干净的解决方案,以根据条件安全地从a

中删除元素。InvalidOperationException List<T>在A

>中使用List<T>.Remove()>>>>>>标准环路时,出现了常见问题。 索引转移会引起问题。List<T>.RemoveAt() foreachfor解决方案1:反向迭代

> >使用A 循环向后迭代避免索引问题:>

此方法从末端开始,删除元素而不会影响后续索引。 for

解决方案2:
<code class="language-csharp">var list = new List<int>(Enumerable.Range(1, 10));
for (int i = list.Count - 1; i >= 0; i--) {
    if (list[i] > 5) {
        list.RemoveAt(i);
    }
}
list.ForEach(i => Console.WriteLine(i));</code>
方法

> 一种更简洁,更可读的方法是使用带有谓词的RemoveAll()>方法:>

这优雅地消除了满足给定条件的所有元素(在这种情况下为

)。 通常,它的清晰度和效率是首选。RemoveAll()>

>两种方法都提供了可靠的方法,可以在迭代期间从列表中删除元素,防止异常并确保数据完整性。
<code class="language-csharp">var list = new List<int>(Enumerable.Range(1, 10));
Console.WriteLine("Before:");
list.ForEach(i => Console.WriteLine(i));
list.RemoveAll(i => i > 5);
Console.WriteLine("After:");
list.ForEach(i => Console.WriteLine(i));</code>
方法通常是其简单性和可读性的首选选择。

>

以上是在C#迭代期间,如何将元素安全地从列表中删除?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn