.NET Framework类库MemberwiseClone 方法

.NET Framework 类库
Object MemberwiseClone 方法

更新:2010 年 9 月

创建当前 Object的浅表副本。

命名空间:   System
程序集:   mscorlib(在 mscorlib.dll 中)
语法
Protected Function MemberwiseClone As Object

       
       
       
         
         
         
         
  1. protected Object MemberwiseClone()
protected:
Object^ MemberwiseClone()
member MemberwiseClone : unit -> Object 
返回值
类型: SystemObject
当前 Object的浅表副本。
备注

MemberwiseClone 方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。 如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。

例如,考虑引用对象 A 和 B 的被称为 X 的对象。 对象 B 依次引用对象 C。X 的浅表副本创建一个新对象 X2,该对象也引用对象 A 和 B。 相比而言,X 的深层副本创建一个新对象 X2,该对象引用新对象 A2 和 B2(分别为 A 和 B 的副本)。B2 又引用新对象 C2,C2 是 C 的副本。 该示例阐释了浅层和深层复制操作之间的区别。

有很多方法可以实现深层复制操作,前提是浅表复制操作由 MemberwiseClone 方法执行但不符合您的需求。这些要求包括:

  • 调用要复制的对象的类构造函数以创建含有从第一个对象中提出的属性值的第二个对象。 这假定对象的值完全由类构造函数定义。

  • 调用 MemberwiseClone 方法创建的对象的浅表副本,然后将指定新的对象,其值均相同,原始对象的任何属性或字段的值是引用类型。该示例中的 DeepCopy 方法阐释了这种方法。

  • 序列化要深层复制的对象,然后将序列化的数据还原到另一个对象变量。

  • 使用带递归的反射执行的深层复制操作。

示例

下面的示例演示 MemberwiseClone 方法。它定义了 ShallowCopy 方法,该方法通过调用 MemberwiseClone 方法来在 Person 对象上执行浅表复制操作。它还定义了在 Person 对象上执行深层复制操作的 D

你可能感兴趣的:(asp.net应用)