c# - 在 foreach 循环中修改列表

标签 c# list foreach

我有一个与此类似的结构(但很多更复杂):

var list = new List<string>();

// .. populate list ..

foreach(var item in list)
{
    DoFunction(list);
}

public void DoFunction(List<string> list)
{
    if(someCondition == true)
    {
        // .. modify list in here ..
    }
}

现在,我知道无法编辑您正在遍历的集合,但是如果您确实必须编辑列表(没有try catch),您如何优雅地跳出循环> 声明)?有什么方法可以判断列表是否已被编辑?您能否编辑列表并在它注意到之前快速break;

最佳答案

是的,你可以打破,如果那是你真正想要的。在 for 循环尝试从列表中获取下一项之前,不会抛出异常。

但我发现创建和遍历列表的副本是最简单的,因此您不必担心它。

foreach(var item in list.ToList())

与更复杂代码的可维护性成本相比,额外的、未修改的列表所增加的性能开销通常可以忽略不计。

关于c# - 在 foreach 循环中修改列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294983/

相关文章:

python - 遍历重新获取的元素列表

javascript - 如何在 Underscore.js 中使用 _.each() 遍历每 2 个项目

r - 错误于{: task 1 failed - "error returned from C call" using ncvar_get (ncdf4 package) within foreach loop

c# - 如何在 C# 中使用 SHA256 和 ECDSA 算法创建数字签名

c# - Rx.net - 同步与异步观察者 - 取决于源?

C# 获取调用某个函数的函数列表

php - 如何给出 php-xml 总计数 ID

c# - 具有动态枚举字段的自定义 Unity C# 脚本编辑器

Python:从树状数据结构中的列表列表创建组合

python-3.x - 为什么我从列表开头删除偶数的代码不起作用?