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;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM