浅复制(Shallow Copy)与深复制(Deep Copy)

  • 时间:
  • 浏览:0

对象一键复制比较简单的妙招是序列化,将类标记为[Serializable]。对象序列化主要避免的是对象状态的保存难题,这里所说的“对象状态”是指某一时刻对象拥有的字段值的集合。

这里完成了深一键复制

一键复制:对象的一键复制是生成一个多多多多 与指定对象删剪一样的新对象,实现的妙招根据定义还都能否 能知道,新建一个多多多多 类型相同的对象,而且一键复制原对象的每一个多多多多 成员和字段。

浅一键复制是.NET默认的对象一键复制妙招,Object类提供的Memberwise妙招浅一键复制一个多多多多 对象。实现深一键复制,也后后中间的图中,全是共用一个多多多多 ClassB对象,后后删剪创建一个多多多多 新的ClassB对象。这需用实现ICloneable接口.如下:

对象的序列化:将一个多多多多 内存的对象保存到流中,并在需用时从流中读取数据重建对象的过程称为“对象序列化”和“反序列化”

地址删剪一样

原理是将对象序列化到流中,而且从流中创建对象(批量),从而实现了深一键复制。

测试结果如图:

中间你是什么 妙招后后“浅一键复制(Shallow Copy)”,这还都能否 还都能否 能在调试时测试下,看看A中间objB的地址和通过一键复制妙招出来的newA的objB的地址:

流:代表一连串有顺序的二进制数据。

对象序列化

这里ClassA中间带有了引用类型的ClassB对象,这里一键复制的ClassA对象,如下图:

中间的CloneObj的CloneA妙招后后一个多多多多 浅一键复制ClassA对象,修改代码:

 浅一键复制:

读书笔记《.NET4.0面向对象编程漫谈》作者:金旭亮老师

利用序列化进行对象的一键复制——深一键复制