C# for循环或者foreach往List中添加对象的时候前面的数据总被最后加入的覆盖

昨天我旁边小姐姐遇到一个问题,就是在执行for循环往list添加数据的时候,前面的数据信息总是被后面的数据信息所覆盖。

C# for循环或者foreach往List中添加对象的时候前面的数据总被最后加入的覆盖

 这样编写就会造成这样的数据效果:(所有的数据都会被覆盖)

C# for循环或者foreach往List中添加对象的时候前面的数据总被最后加入的覆盖

    问题原因:对于List.Add(),如果T是基本类型(值),则添加的为值;若T为引用类型(对象),则添加的为引用。(即值类型、引用类型的区别和原理) 
所以,循环添加时,添加的都是同一个对象引用,对象的成员值改变,List中所有对象的值就改变了。

    解决方案:

    方法一:每次在改变值之前重新new一下对象。

    C# for循环或者foreach往List中添加对象的时候前面的数据总被最后加入的覆盖

上一篇:Hbase学习02


下一篇:纯CSS3制作进度条源代码