首頁 > 後端開發 > C++ > 在C#中迭代時,如何將元素安全地從列表中刪除?

在C#中迭代時,如何將元素安全地從列表中刪除?

Linda Hamilton
發布: 2025-01-31 02:08:11
原創
520 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板