C# 集合已修改;可能无法执行枚举操作

在winform 项目时遇到: 集合已修改;可能无法执行枚举操作的问题

 

       错误原因:当用foreach遍历Collection时,如果对Collection有Add或者Remove或其他类似操作都会有这个错误。

因为Collection返回的IEnumerator把当前的属性暴露为只读属性,所以对其的修改会导致运行时错误;

       正确代码:

FormCollection collection = Application.OpenForms;
List<Form> frmList = new List<Form>();
for (int i = 0; i < collection.Count; i++)
{
if (collection[i].GetType() == typeof(FrmMainCharts))
{
frmList.Add(collection[i]);
}
}
//
for (int i = 0; i < frmList.Count; i++)
{
frmList[i].Close();
}

因为Form是引用类,所以可以很轻松Close;

posted @ 2016-09-01 14:58  ldldavid  阅读(4131)  评论(0编辑  收藏  举报