Csharp/C#教程:添加到列表重新填充最后一个元素分享


添加到列表重新填充最后一个元素

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

List TheListOfModel = new List(); 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行时,我不知道会发生什么。

我错过了什么?

谢谢

你只有一个对象……

MyComposedModel是一个引用类型。 您正在填充一个列表,其中包含对同一个对象的引用,并且只有最后一个属性。

你可能需要什么:

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

看起来你错误地重复使用了对同一个对象的引用。

当你这样做:

 MyComposedModel ThisObject = new MyComposedModel(); 

这会创建对新对象的单个引用并将其放在堆栈上。 当您迭代列表并执行此操作时:

 ThisObject.Reset(); //clears all properties 

它仍然指向SAME引用,您只需创建一个“MyComposedModel”类型的新对象,设置它的属性并将其添加到列表中。

上述就是C#学习教程:添加到列表重新填充最后一个元素分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/998141.html

(0)
上一篇 2021年12月26日
下一篇 2021年12月26日

精彩推荐