黑马程序员技术交流社区

标题: C#中的深复制和浅复制是谁能帮我解释一下? [打印本页]

作者: 赵洋3916    时间: 2013-6-14 12:06
标题: C#中的深复制和浅复制是谁能帮我解释一下?
C#中的深复制和浅复制是谁能帮我解释一下?
作者: 王宝生    时间: 2013-6-14 12:20
浅复制:是指将对象中的所有字段逐字复杂到一个新对象
        对值类型字段只是简单的拷贝一个副本到目标对象,改变目标对象中值类型字段的值不会反映到原始对象中,因为拷贝的是副本
        对引用型字段则是指拷贝他的一个引用到目标对象。改变目标对象中引用类型字段的值它将反映到原始对象中,因为拷贝的是指向堆是上的一个地址

深复制:深复制和浅复制不同的是对于引用字段的处理,深拷贝将会在新对象中创建一个新的对象和
        原始对象中对应字段相同(内容相同)的字段,也就是说这个引用和原始对象的引用是不同, 我们改变新
        对象中这个字段的时候是不会影响到原始对象中对应字段的内容。

浅复制: 实现浅复制需要使用Object类的MemberwiseClone方法用于创建一个浅表副本
深复制: 须实现 ICloneable接口中的Clone方法,且需要需要克隆的对象加上[Serializable]特性


作者: 李奔    时间: 2013-6-14 12:43
简单说一下:
一般来说浅复制,只是复制了该对象的一个引用,也就是两个引用同时指向了一个对象,它们互相影响。
深复制,是又创建了和原对象属性值一模一样的对象,而不是复制原对象的引用,两个对象互不影响。
作者: 薛良玟    时间: 2013-6-14 14:34
顶起来,受教了,支持支持























优加孕妇防辐射服好吗
作者: 关关雎鸠    时间: 2013-6-15 11:53
一个是行货

一个是山寨货




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2