c# - List.Remove从一个也从另一个删除

标签 c# winforms list foreach

我的方法运行以下命令:

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时。当找到与item匹配的name时,将itemList正确地简化为1,但是奇怪的是origList。立即发生这种情况,一旦foreach进入第二次运行,它就会崩溃并显示collection was modified; enumeration operation may not compute

最佳答案

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

关于c# - List.Remove从一个也从另一个删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32699446/

相关文章:

c# - 模型未实现 INotifyPropertyChanged

c# - 我可以告诉 CLR 通过引用在 AppDomain 之间编码(marshal)不可变对象(immutable对象)吗?

c# - 关闭父级而不关闭子级

C# 使用自定义 TabPage 更改 TabControl 中的默认 TabPage

java - 将文本文件解析为字符串(JAVA)

python - 根据某些标准查找列表的共同元素?

python - 如何从/etc/oratab 文件中提取字符串?

c# - MVC4 - 无法加载文件或程序集 'Microsoft.Web.Infrastructure...'

c# - Excel使用密码保护工作簿但只允许只读

C# WinForms :- Why Thread Timer tick event not elapsed when UI is doing some other operation?