浅拷贝和深拷贝之间的区别:
浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。
深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对象中对应字段的内容。
如何实现深拷贝?
实现IClonable接口,Override父类的Clone()函数
Public Function Clone() As Object Implements IClonable
一般的方法:New一个要clone的新对象,将原对象中成员的值赋给新对象的成员,返回该新对象的引用。
较好的办法:将对象序列化到一个System.IO.MemoryStream中,然后立即对该内存流执行反序列化,从而得到一个新的对象。但好像不是任何对象都可以序列化!