首頁 > 後端開發 > C++ > 迭代時如何安全有效地從通用列表中刪除元素?

迭代時如何安全有效地從通用列表中刪除元素?

Susan Sarandon
發布: 2025-01-31 01:51:09
原創
615 人瀏覽過

How to Safely and Efficiently Remove Elements from a Generic List While Iterating?

安全高效地從泛型列表中移除元素的最佳實踐

在迭代泛型列表並執行可能需要移除元素的操作時,選擇合適的迭代模式至關重要,以避免常見的陷阱。例如,在foreach循環中使用.Remove(element)會導致異常,因為在枚舉過程中修改了集合。

穩健的解決方案

為了解決這個問題,建議使用for循環反向迭代列表。這種方法確保在移除元素時集合中的當前位置保持準確。

for (int i = safePendingList.Count - 1; i >= 0; i--)
{
    // 处理元素
    // safependingList.RemoveAt(i);
}
登入後複製

示例:

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));
登入後複製

替代方法

另一種選擇是使用RemoveAll方法和謂詞來篩選要移除的元素。這種方法簡化了流程,減少了在循環中手動移除元素的需求。

safePendingList.RemoveAll(item => item.Value == someValue);
登入後複製

簡化演示:

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));
登入後複製

這些技術提供了安全可靠的機制,用於在迭代泛型列表時安全地移除元素,確保代碼執行高效且無異常。

以上是迭代時如何安全有效地從通用列表中刪除元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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