在C#中迭代時安全地移除列表元素
在迭代過程中修改列表可能會導致問題,例如令人頭疼的“集合已修改;枚舉操作可能無法執行”異常。但是,有一些技術可以在迭代過程中有效地移除元素。
使用for循環反向迭代
一種方法是使用for循環反向迭代列表。這可以防止破壞集合的索引位置:
for (int i = safePendingList.Count - 1; i >= 0; i--) { // 处理元素 // safePendingList.RemoveAt(i); }
RemoveAll方法
另一種選擇是使用帶有謂詞的RemoveAll方法來檢查每個元素:
safePendingList.RemoveAll(item => item.Value == someValue);
示例
考慮以下整數列表:
var list = new List<int>(Enumerable.Range(1, 10));
移除前:
Console.WriteLine("移除前:"); list.ForEach(i => Console.WriteLine(i));
輸出:
<code>1 2 3 4 5 6 7 8 9 10</code>
移除後:
list.RemoveAll(i => i > 5); Console.WriteLine("移除后:"); list.ForEach(i => Console.WriteLine(i));
輸出:
<code>1 2 3 4 5</code>
這演示瞭如何從列表中移除大於5的元素。
以上是在C#中迭代時,如何將元素安全地從列表中刪除?的詳細內容。更多資訊請關注PHP中文網其他相關文章!