列表.从一个移走也是从另一个移走
本文关键字:另一个 列表 一个 | 更新日期: 2023-09-27 18:13:51
我的方法运行如下:
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
时。当找到与name
匹配的item
时,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)
,这将创建一个独立的副本。