黑马程序员技术交流社区

标题: C#深复制和浅复制? [打印本页]

作者: -淡然一笑    时间: 2014-1-17 13:45
标题: C#深复制和浅复制?
本帖最后由 -淡然一笑 于 2014-1-22 12:53 编辑

大家谈谈 C# 中深复制和浅复制?
作者: 念~    时间: 2014-1-17 14:51
浅层拷贝,就是只拷贝类的第一层成员,而且如果成员是引用类型,则引用同一份。

深层拷贝,把对象引用的所有直接、间接的对象都拷贝一份。完全的一份拷贝。如果实现深层拷贝?需要耐心或者使用IO流

作者: 矫情    时间: 2014-1-19 12:59
浅复制就是只复制对象本身,但对象引用的数据是不复制的,是共享的。
深复制就除了复制对象本身,引用的其他对象也会一起复制。

作者: Goodstudy    时间: 2014-1-19 14:34
浅拷贝:是指将对象中的所有字段逐字复杂到一个新对象 ,重要的是区分引用对象的类型,如果是值类型,改变目标对象中值类型字段的值不会反映到原始对象中;如果是引用类型,改变目标对象中引用类型字段的值它将反映到原始对象中,因为拷贝的只是指向原始数据的一个地址。
深拷贝:深拷贝与浅拷贝不同的是对于引用字段的处理,深拷贝不是只复制一个地址,而是直接建立一个与原始数据相同的副本,无论是值类型还是引用类型,执行深拷贝后副本中的数据改变都不影响原始数据。
浅复制: 实现浅复制需要使用Object类的MemberwiseClone方法用于创建一个浅表副本  
深复制: 须实现 ICloneable接口中的Clone方法,且需要需要克隆的对象加上[Serializable]特性





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