我有一个与此类似的结构(但很多更复杂):
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/