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