本文摘自PHP中文网,作者黄舟,侵删。
有的场合下,我们需要浅复制便能解决问题,因为我们复制出来的实例,仍然引用原来的初始对象。但是有的时候,这是不够的,因为我们复制出来的实例,还要对引用类型做出局部值的修改调整,并且保证不能影响初始对象!这便要求深度复制了!
需求是这样的:
首先看一下浅复制为什么不能满足我们的要求:我们要复制简历,并且复制出的版本只与模板简历的求职意向中的公司名称不一致。
我们的第一版代码是这样的:
简历模型1.0版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
里面嵌套的子类教育背景对象EducationInfo
1 2 3 4 5 6 |
|
还有嵌套的对象WantedJob1:
1 2 3 4 5 6 |
|
我们在客户端使用下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
但是我们得到了公司名称都是”ali”
这是典型的浅复制!
不能满足公司名称要区分的要求,继续修改,变为深度复制:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
求职意向对象2.0:
1 2 3 4 5 6 7 8 9 10 |
|
客户端调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
得到不同的公司名称!深度复制成功!
以上就是.NET框架-Clone如何由浅变深的示例代码详解的详细内容!
相关阅读 >>
.NET框架-xml.serialization的思维导图分享
.NET框架-try-parse和tester-doer的使用区别
更多相关阅读请进入《.NET框架》频道 >>

C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。