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

C#里面有类似Java里的Clone方法吗??如果有的话能实现深度Copy吗??

楼主smcdl(大土豆)2004-12-03 14:49:21 在 .NET技术 / C# 提问

C#里面有类似Java里的Clone方法吗??如果有的话能实现深度Copy吗?? 问题点数:50、回复次数:11Top

1 楼exboy(kuku)回复于 2004-12-03 14:58:12 得分 0

C#里面个   ICloneable   接口,此接口只有一个方法   Clone,   一般要实现克隆的类都实现此接口。  
   
  可以实现深度   Copy   。Top

2 楼TonyJoule(寒星㊣)回复于 2004-12-03 15:02:40 得分 0

当然有。楼上已经说了。不过深度Copy需要自己写代码的。Top

3 楼SAsura(爱我别走)回复于 2004-12-03 15:18:49 得分 10

试试先序列化,在反序列化Top

4 楼jimh(Jimmy)回复于 2004-12-03 15:37:21 得分 0

如果是自定义类,需要自己写代码Top

5 楼nga96(因为我笨,所以努力。陈勇华)回复于 2004-12-03 18:35:41 得分 0

i   do   not   knowTop

6 楼linzsoft(邪邪)回复于 2004-12-03 18:44:54 得分 0

有,但深度的要自己写Top

7 楼smcdl(大土豆)回复于 2004-12-06 21:51:28 得分 0

怎么有人说可以深度copy,有人说不可以,到底谁对呢??Top

8 楼smcdl(大土豆)回复于 2004-12-07 10:40:40 得分 0

顶,请高人回答Top

9 楼OneDotRed(武装到眼神)回复于 2004-12-07 12:07:16 得分 30

继承ICloneable接口的类只能实现浅度Clone,如果类中有子类,其他引用类型等,clone就不完全。  
  要实现深度克隆,可以这样考虑:  
  首先使类支持Serealizable,然后利用BinaryFormatter将实例本事序列化为byte[]或stream,再反序列化为该类型的实例。  
  ------------------  
  CodeProject上好像有篇文章,由于太慢了,所以没去搜索了:)Top

10 楼OneDotRed(武装到眼神)回复于 2004-12-07 12:08:40 得分 0

找到一篇vb的  
  http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/clone.mspxTop

11 楼RunnaRen(什么时候才懂C#?)回复于 2004-12-07 12:30:32 得分 10

MemberwiseClone()方法执行的只是浅层拷贝。而深层拷贝要递归的拷贝其字段所引用的所有对象。  
   
  public   class   DeepClone   :   System.ICloneable  
  {  
          Person   g;  
          Person   b;  
   
          public   Object   Clone()  
          {  
                  DeepClone   dc   =   (DeepClone)this.MemberwiseClone();  
                  dc.g   =   (Person)(this.g.Clone());  
                  dc.b   =   (Person)(this.b.Clone());  
                  return   dc;  
          }  
  }Top

相关问题

  • java与c/c++
  • Java or C#
  • Java Or C++
  • Java OR C#
  • java c/s
  • c>java?57:0
  • c++转java &&boost
  • Difference between java and c++ ?
  • C++ 和Java
  • C++ 转 JAVA

关键词

  • c#
  • 接口
  • 拷贝
  • dc
  • clone
  • deepclone
  • 实现
  • 深度copy
  • icloneable
  • 方法

得分解答快速导航

  • 帖主:smcdl
  • SAsura
  • OneDotRed
  • RunnaRen

相关链接

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

广告也精彩

反馈

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