由于某种原因,我似乎无法确定我做错了什么。我已经尝试了一些东西,每次修改原始记录。遍历列表并修改对象正在更新原始文件
我有一个特定类的列表。我遍历整个列表,如果满足特定的条件,我需要为这个迭代创建一个重复的项目,修改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 ==真,class.IsDupe ==假。在条件被打中之前,当class被添加到classesToSave时,classesToSave中唯一的条目是原始类(class.NeedsDupe == true,class.IsDupe == false)。但是,当条件被击中并且dupeClass对象被修改时,并且在dupeClass被添加到classesToSave之前,将修改classesToSave中的原始条目(并且只有条目)。
我完全错过了什么吗?我有一种感觉,我正在画一个大脑放屁,也许需要参考旧的对象?或者我以某种方式复制BindingList的属性,并且当我更改dupeClass对象时,我认为这是一个新对象,实际上导致更改涟漪穿过?
感谢您的任何帮助。
你不能有一个在C#中命名为“类”的变量。 –
嗯,这是一个简单的例子。显然不使用实际的类名。 – Tom