>在迭代期間有效從C列表中刪除元素 >在使用標準方法迭代時修改列表通常會導致
>錯誤。 本文提出了乾淨的解決方案,以根據條件安全地從a中刪除元素。 InvalidOperationException
List<T>
在A
>中使用List<T>.Remove()
>>>>>>標準環路時,出現了常見問題。 索引轉移會引起問題。 List<T>.RemoveAt()
foreach
for
解決方案1:反向迭代
>
>使用A 循環向後迭代避免索引問題:
此方法從末端開始,刪除元素而不會影響後續索引。
for
<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中文網其他相關文章!