标题:GetEnumerator()返回的枚举集合其中枚举成员是对调用集合的成员的深度复制吗 ...
只看楼主
jiangzhen3s
Rank: 1
来 自:福建宁德古田
等 级:新手上路
帖 子:102
专家分:0
注 册:2009-2-27
结帖率:100%
已结贴  问题点数:38 回复次数:4 
GetEnumerator()返回的枚举集合其中枚举成员是对调用集合的成员的深度复制吗?
GetEnumerator()返回的枚举集合,其中的枚举成员是对调用集合的成员的深度复制吗?


我要实现深度复制集合的时候遇到了这个问题,
public object  Clone()
{
     people ps=new people ();
     foreach (person   p in Dictionary.Values)
     {
          ps.Add(p );
     }
     return ps;
}

如果p只是一个对Dictionary.Values成员的一个引用,则就不是深度复制了。
GetEnumerator()返回的枚举集合,其中的枚举成员是对调用集合的成员的深度复制吗?
搜索更多相关主题的帖子: 深度 成员 枚举 
2009-09-06 21:27
jiangzhen3s
Rank: 1
来 自:福建宁德古田
等 级:新手上路
帖 子:102
专家分:0
注 册:2009-2-27
得分:0 

坚持--固执
2009-09-07 12:24
jiangzhen3s
Rank: 1
来 自:福建宁德古田
等 级:新手上路
帖 子:102
专家分:0
注 册:2009-2-27
得分:0 

坚持--固执
2009-09-08 07:36
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
得分:26 
不明白什么是深度复制,但p并不是一个对Dictionary.Values成员的一个引用。foreach语句会先将要操作的对像生成一个副本,所有的读取操作都在这个副本中进行的,与原对像无关。

QQ:81704464
2009-09-08 07:39
jiangzhen3s
Rank: 1
来 自:福建宁德古田
等 级:新手上路
帖 子:102
专家分:0
注 册:2009-2-27
得分:0 
回复 4楼 athenalux
我说的深度复制是这个意思,你不是也说foreach得到的p是一个副本嘛,如果这个副本是深度复制原来的母本,那么若母本里头有一个字段是一个引用类型,它引用了一个对象,刚说如果此时是深度复制那么这个被引用的对象也会被复制一份供副本使用。

坚持--固执
2009-09-08 08:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-284997-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.285035 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved