在winform 項目時遇到: 集合已修改;可能沒法執行枚舉操做的問題orm
錯誤緣由:當用foreach遍歷Collection時,若是對Collection有Add或者Remove或其餘相似操做都會有這個錯誤。blog
由於Collection返回的IEnumerator把當前的屬性暴露爲只讀屬性,因此對其的修改會致使運行時錯誤;io
正確代碼:form
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();
}foreach
由於Form是引用類,因此能夠很輕鬆Close;List