列表.从一个移走也是从另一个移走

本文关键字:另一个 列表 一个 | 更新日期: 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 = 2origList = 2时。当找到与name匹配的item时,itemList被正确地还原为1,但奇怪的是origList也是如此。这是直接发生的,只要foreach进入第二次运行,它就崩溃了,说collection was modified; enumeration operation may not compute

看起来origListitemList引用了List<string>的同一个实例。确保itemList实际上是origList的不同副本,即不要执行itemList = origList,因为它只是将引用复制到相同的列表。相反,您可以执行itemList = new List<string>(origList),这将创建一个独立的副本。

列表.从一个移走也是从另一个移走