CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

关于深拷贝和浅拷贝的深入问题?!!

楼主lgjsoft(王量)2006-06-02 20:28:21 在 .NET技术 / C# 提问

1,什么情况下使用深拷贝?  
   
  2,是不是实现了ICloneable接口就可以使用深拷贝   ?  
   
  3,那些对象是实现了ICloneable接口?    
  HASHTABLE   ? 问题点数:20、回复次数:11Top

1 楼runrunrun(农妇、山泉、有点田)回复于 2006-06-02 20:50:20 得分 0

1.   需要的时候  
   
  2.   ICloneable   是由各个类自己实现的。至于是不是真的是深拷贝,只有天知道了。  
   
  3.   查MSDNTop

2 楼chenzhaozhan(ASharp)回复于 2006-06-02 20:53:46 得分 0

浅拷贝会跟着原来的变Top

3 楼amandag(高歌)回复于 2006-06-02 21:01:50 得分 0

1.什么时候用深拷贝  
  当你发现计算机所理解的copy不能表达你真实的想法的时候,比如说你想copy一下Bill   Gates,但在copy的时候把他的银行卡也copy过来了,注意,你copy的只是个银行卡,所以就会发生不该发生的事情,任何一个Bill银行帐上的money增加和减少都会影响另一个,而如果某个Bill发生了销户这件事的话,另一个的卡号就肯定不能用了,在C++中出现这个问题,往往是copy的对象中包括另一个对象的指针,而在C#中则是你想copy的对象包括了其他对象的引用,那么这个其他对象一旦改变,会影响源对象和copy后的对象,这个时候,就需要我们手工完成深拷贝的工作了Top

4 楼amandag(高歌)回复于 2006-06-02 21:10:47 得分 0

2.是不是实现了ICloneable接口就可以使用深拷贝   ?  
   
  在C#中可以使用MemberwiseClone()方法来实现浅copy(Java中好像是clone()),也可以执行—个接口ICloneable以标准的方式来进行深拷贝。要实现这个接口,就必须实现ICloneable包含的一个方法Clone()(返回类型是System.Object),这个方法应该是我们自己完成实现的,原因很简单,计算机并不知道你打算进行怎么的copyTop

5 楼xqlez(&引用)回复于 2006-06-02 21:16:11 得分 0

1,什么情况下使用深拷贝?  
  你需要改变对象的内容但又要保留原有对象的内容  
   
   
  2,是不是实现了ICloneable接口就可以使用深拷贝   ?  
  谁实现谁知道  
   
  3,那些对象是实现了ICloneable接口?    
  建议查MSDN  
   
  Top

6 楼amandag(高歌)回复于 2006-06-02 21:19:13 得分 0

3,那些对象是实现了ICloneable接口?    
  建议查MSDN,自己解决Top

7 楼NogamesNow()回复于 2006-06-03 22:06:07 得分 0

从内存中去理解。浅拷贝只是拷贝变量或者对象的地址,深拷贝就是对整个对象或者变量的复制。Top

8 楼draren(向上落的雨)回复于 2006-06-03 22:11:24 得分 0

观望Top

9 楼zhyzhr(zhyzhr)回复于 2006-06-04 02:19:16 得分 0

NogamesNow()   说的是对的。  
   
  一个对象中如果全部都是值数据,就无所谓深浅复制的问题。  
  只有当对象中包含引用数据时,浅复制是这样的:string   s=strOld;  
  深复制是这样的:string   s=(string)strOld.Clone();  
  浅复制是“新人喝老酒”,老酒变了新人喝的酒也变了。  
  深复制是“新人喝新酒”,老酒变了不影响新酒。  
   
  ICloneable接口只是形式,重点在于实现的过程。Top

10 楼seekdsj()回复于 2006-06-04 02:43:54 得分 0

浅拷贝就是拷贝了一个引用,深拷贝就是拷贝了一个副本Top

11 楼LifeAndC(蓝色忧郁)回复于 2006-06-04 11:13:48 得分 0

实现不行,用C++去模似深拷贝与浅拷贝,应该会明白原理了。Top

相关问题

关键词

得分解答快速导航

  • 帖主:lgjsoft

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo