>在迭代期间有效从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中文网其他相关文章!