出于某种原因,我似乎无法确定我做错了什么。我尝试了几件事,每次修改原始记录。
我有一个特定班级的清单。我正在遍历列表,如果满足特定条件,我需要为此迭代创建一个重复项,修改 2 个值,然后将其添加到最终列表中。除了每次我修改我创建的副本时,原始值都会被修改。数据是设置为列表的绑定列表。
// MyClasses is a BindingList<MyClass>
List<MyClass> classesToSave = new List<MyClass>();
foreach (var class in MyClasses)
{
classesToSave(class);
if (class.NeedsDupe)
{
MyClass dupeClass = new MyClass();
dupeClass = class;
dupeClass.NeedsDupe = false;
dupeClass.IsDupe = true;
classesToSave(dupeClass);
}
}
假设通过第一次迭代,MyClasses 中的第一项具有 class.NeedsDupe == true 和 class.IsDupe == false。在条件命中之前将类添加到 classesToSave 时,classesToSave 中的唯一条目是原始类(class.NeedsDupe == true 和 class.IsDupe == false)。但是,当满足条件并修改 dupeClass 对象时,并且在将 dupeClass 添加到 classesToSave 之前,然后修改 classesToSave 中的原始条目(并且唯一条目)。
我完全错过了什么吗?我有一种感觉,我正在画一个大脑放屁,可能需要参考旧对象?或者我是否以某种方式复制了 BindingList 的属性,并且当我更改我认为是新对象的 dupeClass 对象时,我实际上导致更改回传?
谢谢你的帮助。