Chr*_*ish 1 c# foreach list winforms
我的方法运行如下:
public void FrmClosed_Action(string name)
{
foreach (string item in this.origList)
{
if (item == name)
{ this.itemList.Remove(item); }
}
if (this.itemList.Count == 0)
{ Application.Exit(); }
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码itemList = 2和origList = 2.当一个item被发现匹配时name,itemList正确地减少到1但奇怪的是这样origList.这种情况会立即发生,一旦foreach进入第二次运行就会崩溃说collection was modified; enumeration operation may not compute.
它看起来像origList和itemList参考的同一个实例List<string>.确保它itemList实际上是一个独特的副本origList,即不要这样做itemList = origList,因为它只是将引用复制到同一个列表中.相反,您可以这样做itemList = new List<string>(origList),这会创建一个独立的副本.