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

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

Linda Hamilton
Linda Hamilton原创
2025-01-31 02:08:11572浏览

How to Safely Remove Elements from a List While Iterating in C#?

在C#中迭代时安全地移除列表元素

在迭代过程中修改列表可能会导致问题,例如令人头疼的“集合已修改;枚举操作可能无法执行”异常。但是,有一些技术可以在迭代过程中有效地移除元素。

使用for循环反向迭代

一种方法是使用for循环反向迭代列表。这可以防止破坏集合的索引位置:

<code class="language-csharp">for (int i = safePendingList.Count - 1; i >= 0; i--)
{
    // 处理元素
    // safePendingList.RemoveAt(i);
}</code>

RemoveAll方法

另一种选择是使用带有谓词的RemoveAll方法来检查每个元素:

<code class="language-csharp">safePendingList.RemoveAll(item => item.Value == someValue);</code>

示例

考虑以下整数列表:

<code class="language-csharp">var list = new List<int>(Enumerable.Range(1, 10));</code>

移除前:

<code class="language-csharp">Console.WriteLine("移除前:");
list.ForEach(i => Console.WriteLine(i));</code>

输出:

<code>1
2
3
4
5
6
7
8
9
10</code>

移除后:

<code class="language-csharp">list.RemoveAll(i => i > 5);
Console.WriteLine("移除后:");
list.ForEach(i => Console.WriteLine(i));</code>

输出:

<code>1
2
3
4
5</code>

这演示了如何从列表中移除大于5的元素。

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

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