昨天我旁边小姐姐遇到一个问题,就是在执行for循环往list添加数据的时候,前面的数据信息总是被后面的数据信息所覆盖。
这样编写就会造成这样的数据效果:(所有的数据都会被覆盖)
问题原因:对于List.Add(),如果T是基本类型(值),则添加的为值;若T为引用类型(对象),则添加的为引用。(即值类型、引用类型的区别和原理)
所以,循环添加时,添加的都是同一个对象引用,对象的成员值改变,List中所有对象的值就改变了。解决方案:
方法一:每次在改变值之前重新new一下对象。
本文共 289 字,大约阅读时间需要 1 分钟。
昨天我旁边小姐姐遇到一个问题,就是在执行for循环往list添加数据的时候,前面的数据信息总是被后面的数据信息所覆盖。
这样编写就会造成这样的数据效果:(所有的数据都会被覆盖)
问题原因:对于List.Add(),如果T是基本类型(值),则添加的为值;若T为引用类型(对象),则添加的为引用。(即值类型、引用类型的区别和原理)
所以,循环添加时,添加的都是同一个对象引用,对象的成员值改变,List中所有对象的值就改变了。解决方案:
方法一:每次在改变值之前重新new一下对象。
转载于:https://www.cnblogs.com/pukua/p/8889418.html