标签:调用 btn 释放 foreach 两种 条件 i++ 内存 错误
循环中释放容器时调用Dispose()方法会销毁对象,导致容器的个数变化。
正确示例
//方法一
for (int i = this.flowLayoutPanel1.Controls.Count-1; i >=0; i--) { this.flowLayoutPanel1.Controls[i].Click -= btnClick; this.flowLayoutPanel1.Controls[i].Dispose(); }
//方法二
int ctlNum = this.flowLayoutPanel1.Controls.Count;
for (int i = 0; i < ctlNum; i++)
{
this.flowLayoutPanel1.Controls[0].Click -= btnClick;
this.flowLayoutPanel1.Controls[0].Dispose();
}
错误示例
两种方式都因在循环中修改了循环条件,导致内存泄漏
标签:调用 btn 释放 foreach 两种 条件 i++ 内存 错误
原文地址:https://www.cnblogs.com/zutian/p/11241505.html