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

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

Linda Hamilton
發布: 2025-01-31 01:56:09
原創
181 人瀏覽過

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

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