List<User> lstUsers = new List<User>(); lstUsers.add(new user(){Name="jack",age="23"}); lstUsers.add(lstUsers[0]); //当前两项user相同 lstUsers[1].Name="Ann" //当我把第二项user的name属性修改成Ann,lstUsers第一项user的name也成了Ann
当我修改任意一项user,其他都跟着变
引用类型的分布问题,这个可以看看, 都分布在托管堆的同一块内存。
只是 两个 变量不同,变量是分布在堆栈上的,实际都指向同一个引用,都是操作同一个对象。
怎样解决这个问题呢,难道用clone吗,有没有更简单的方法~
@成群:
序列化深拷贝、重新new 一个对象 再添加
@Qlin: 我知道这个方法,想问的是只有这个方法吗?
差不多 就这两种方式吧
clone 和 new
楼上的和楼上的楼上都是正解。
因为你的User是引用类型~