作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个循环遍历列表中的元素。我需要根据某些条件从循环中的这个列表中删除元素。当我尝试在 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/
我是一名优秀的程序员,十分优秀!