我的方法运行以下命令:
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(); }
}
当我运行代码
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)
,这将创建一个独立的副本。
关于c# - List.Remove从一个也从另一个删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699446/