gpt4 book ai didi

c# - 遍历列表时从列表中删除元素时出现问题

转载 作者:可可西里 更新时间:2023-11-01 03:04:26 26 4
gpt4 key购买 nike

我有一个循环遍历列表中的元素。我需要根据某些条件从循环中的这个列表中删除元素。当我尝试在 C# 中执行此操作时,出现异常。显然,不允许从正在迭代的列表中删除元素。使用 foreach 循环观察到该问题。有什么标准的方法可以解决这个问题吗?

注意:我能想到的一种解决方案是仅出于迭代目的创建列表的副本,并在循环内从原始列表中删除元素。我正在寻找一种更好的方法来处理这个问题。

最佳答案

使用 List<T>ToArray()方法在这种情况下有很大帮助:

List<MyClass> items = new List<MyClass>();
foreach (MyClass item in items.ToArray())
{
if (/* condition */) items.Remove(item);
}

另一种方法是使用 for 循环而不是 foreach,但是当你删除一个元素时你必须递减索引变量,即

List<MyClass> items = new List<MyClass>();
for (int i = 0; i < items.Count; i++)
{
if (/* condition */)
{
items.RemoveAt(i);
i--;
}
}

关于c# - 遍历列表时从列表中删除元素时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3545731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com