在用foreach遍历Application.OpenForms的时候,弹出“集合已修改;可能无法执行枚举操作。”
原代码如下
public static void closeform()
{
if (Application.OpenForms != null && Application.OpenForms.Count > 0)
{
foreach (Form cform in Application.OpenForms)
{
cform.Close();
}
}
}修改之后代码如下
public static void closeform()
{
if (Application.OpenForms != null && Application.OpenForms.Count > 0)
{
for (int i = 0; i < Application.OpenForms.Count;i++ )
{
Form cform = Application.OpenForms[i];
cform.Close();
}
}
}foreach语句是对枚举数的包装,它只允许从集合中读取,不允许写入集合。
也就是,不能在foreach里遍历的时侯把它的元素进行删除或增加的操作的
本文探讨了在使用foreach遍历并关闭窗体时遇到的集合被修改错误,并提供了一个有效的解决方案,即将foreach替换为for循环来避免该问题。
24

被折叠的 条评论
为什么被折叠?



