【发布时间】:2015-12-08 18:39:01
【问题描述】:
我正在尝试编写一个信息提供程序类。我想通过Clone() 提供深拷贝。所以我尝试的是:
public MyInfoClass Clone()
{
MyInfoClass temp = (MyInfoClass)this.MemberwiseClone();
foreach (MySystem sys in _mySystems)
{
temp.AddSys(sys);
}
return temp;
}
集合如下。每当集合至少有一个对象时,它就会抛出异常:
集合已修改;枚举操作可能无法执行。
private ObservableCollection<MySystem> _mySystems;
public ObservableCollection<MySystem> MySystems
{
get{ return _mySystems; }
}
我尝试调试并观察到temp.AddSys(sys) 成功执行,但在下一步引发异常。你能帮忙吗?
【问题讨论】:
-
我看不到 MySystems 的使用位置。但是,似乎在某个地方,您正在枚举一个集合并尝试在这样做的同时更改该集合!像 foreach(var item in items) { items.Remove(someItem); }
-
旁注 -
MemberwiseClone用于浅拷贝,而不是深拷贝。如果你想要深度克隆,请参阅this
标签: c# .net clone observablecollection