Q5:MemberwiseClone浅拷贝过程
uMemberwiseClone创建与当前实例相同类型的新实例,然后复制原始对象的非静态字段。如果字段为值类型的则为则对该字段执行逐位复制。如果字段是引用类型,则复制该引用但不复制被引用的对象;这样,原始对象中的引用和复本中的引用指向同一个对象。
如何实现深拷贝?
实现IClonable接口,Override父类的Clone()函数
Public Function Clone() As Object Implements IClonable
一般的方法:New一个要clone的新对象,将原对象中成员的值赋给新对象的成员,返回该新对象的引用。
较好的办法:将对象序列化到一个System.IO.MemoryStream中,然后立即对该内存流执行反序列化,从而得到一个新的对象。 |