浅表复制和深层复制
设计模式的补充内容
关于浅表复制和深层复制
string类型是一种拥有值类型特点的特殊引用类型,MemberwiseClone方法是这样进行的:如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象:因此原始对象及其副本引用同一对象。
为什么不能同步复制过来呢?
这就是复制引用和复制数值的区别。
复制了引用,新对象指向的仍然是同一个堆。
“浅复制”,被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
“深复制”,深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。