我正在创建一个名为MyComposedModel的对象列表。

List<MyComposedModel> TheListOfModel = new List<MyComposedModel>();
MyComposedModel ThisObject = new MyComposedModel();

foreach (MyComposedModel in some list of MyComposedModel)
{
 ThisObject.Reset(); //clears all properties
 ....
 TheListOfModel.Add(ThisObject);
}


问题在于,每次for-each循环迭代并执行.Add语句时,该列表都会重新填充n + 1个对象,并且列表中的每个对象都是ThisObject。因此,例如,第二次运行时,最后一项正确插入了位置[1],但是[0]中的第一项被第二项替换,并且列表在两个位置都包含了第二项。

ThisObject有一个名为ID的属性,当我调试时,我看到ID发生变化,所以我知道它正在遍历列表,但是当到达.Add行时,我不知道会发生什么。

我想念什么?

谢谢

最佳答案

您只有1个对象...

MyComposedModel是引用类型。您正在使用对同一单个对象的引用填充列表,只有最后的属性有效。

您可能需要什么:

foreach (MyComposedModel otherObject in some list)
{
 //ThisObject.Reset();                  // clears all properties
   thisObject = new MyComposedModel();  // create a new instance instead
  ....
  TheListOfModel.Add(thisObject);
}

关于c# - 添加到列表时将使用最后一个元素重新填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6232118/

10-12 16:06