【大话华说】探深复制与浅复制

      初次接触深复制和浅复制的概念是在大话设计模式上,那是在:第九章  简历复印——原型模式中。说起这个概念总共学习了三遍,第一遍和第二遍都是在大话上,第三遍却是在VB.NET视频中。


      第一遍学习的时候说实话很不了解书上所讲的内容,怎么就能复制过来,怎么就复制不过来呢?书上是这么说的:MemberwiseClone()方法是这样,如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型的,则复制引用但不复制引用的对象。我想大家看完这段话基本就蒙圈了,再看书上后面的解释,一些人可能会明白其中的原因,但是以后再想起来这个概念难免会混淆,或许你当时一看就明白了,但是过后就又忘记了。


      第二遍的时候仔细得品了一下那几句话,然后又去认真看了一下代码。大家仔细对比一下小菜的第二版代码和第三版代码就能发现问题在哪,问题就出在简历类中的两个声明。在第二版中在简历类开头就声明了两个参数:private string timeArea和private stringcompany,而第三版代码中是没有这两个声明的,仅仅是有一个SetPersonalInfo(设置工作经历)的方法。正是这两个声明起了重要的作用,有这两个声明就将变量类型确定了,而在Clone方法的时候是深复制(逐位复制),没有这两个声明那么我们在客户端仅仅执行的是SetPersonalInfo(设置工作经历)这个方法,那么Clone方法的时候就是浅复制(复制引用但不复制引用的对象)。


      第三遍的学习呢就不详细给大家说了,大家学到VB.NET的时候自然会听到台湾特约讲师为大家亲自讲解(*^__^*) 嘻嘻……


      综上所述呢,这个深复制和浅复制真的挺“好”的,它锻炼了我们的理解能力和思考能力。在编程中用到Clone方法的时候需要注意一下。

你可能感兴趣的:(【大话华说】探深复制与浅复制)