在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中文网其他相关文章!