首页 新闻 会员 周边

List<T>复制对象问题

0
悬赏园豆:5 [已解决问题] 解决于 2012-11-21 12:04
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,其他都跟着变

成群的主页 成群 | 初学一级 | 园豆:162
提问于:2012-11-21 11:40
< >
分享
最佳答案
0

引用类型的分布问题,这个可以看看, 都分布在托管堆的同一块内存。

只是 两个 变量不同,变量是分布在堆栈上的,实际都指向同一个引用,都是操作同一个对象。

收获园豆:5
Qlin | 老鸟四级 |园豆:2403 | 2012-11-21 11:43

怎样解决这个问题呢,难道用clone吗,有没有更简单的方法~

成群 | 园豆:162 (初学一级) | 2012-11-21 11:45

@成群: 

序列化深拷贝、重新new 一个对象 再添加

Qlin | 园豆:2403 (老鸟四级) | 2012-11-21 11:46

@Qlin: 我知道这个方法,想问的是只有这个方法吗?

成群 | 园豆:162 (初学一级) | 2012-11-21 11:52

@成群: 

差不多 就这两种方式吧

clone  和 new

Qlin | 园豆:2403 (老鸟四级) | 2012-11-21 11:55
其他回答(1)
0

楼上的和楼上的楼上都是正解。

因为你的User是引用类型~

叶小党 | 园豆:481 (菜鸟二级) | 2012-11-21 12:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册