MarshalByRefObject.MemberwiseClone(Boolean) 方法

定义

创建当前 MarshalByRefObject 对象的浅表副本。

protected:
 MarshalByRefObject ^ MemberwiseClone(bool cloneIdentity);
protected MarshalByRefObject MemberwiseClone (bool cloneIdentity);
override this.MemberwiseClone : bool -> MarshalByRefObject
Protected Function MemberwiseClone (cloneIdentity As Boolean) As MarshalByRefObject

参数

cloneIdentity
Boolean

如果要删除当前 MarshalByRefObject 对象的标识,则为 false,这使该对象在跨远程边界封送时分配一个新标识。 值 false 通常比较合适。 如果为 true,则将当前 MarshalByRefObject 对象的标识复制到它的克隆项,这会将远程客户端调用路由到远程服务器对象。

返回

MarshalByRefObject

当前 MarshalByRefObject 对象的浅表副本。

注解

方法通过创建新 对象,然后将当前 对象的非状态字段复制到新 对象来创建浅 MemberwiseClone(Boolean) MarshalByRefObject MarshalByRefObject 表副本。 如果字段是值类型,则执行字段的位复制。 如果字段是引用类型,则复制引用,但不复制引用的对象;因此,原始对象及其克隆引用同一对象。

例如,考虑一个称为 X 的对象,该对象引用对象 A 和 MarshalByRefObject 对象 B。对象 B 又引用对象 C。X 的浅表副本将创建引用对象 A 和 B 的新对象 X2。相反,X 的深层副本会创建一个新的对象 X2,该对象引用新对象 A2 和 B2,即 A 和 B 的副本。B2 又引用新对象 C2,这是一个副本 C。使用实现 接口的类来执行对象的深层或浅表 ICloneable 副本。

对象的标识定义为远程处理 MarshalByRefObject 客户端调用的目标远程服务器对象。 默认情况下,对象的按成员克隆具有与原始对象相同的标识,这通常不是跨远程处理边界封送到客户端的服务器端对象的克隆的正确 MarshalByRefObject 行为。 指定 (通常适用)以删除克隆的标识,并会导致在克隆跨远程处理边界封送时分配新标识,或使克隆保留原始对象的标识。 false true MarshalByRefObject MemberwiseClone(Boolean)方法旨在供实现远程服务器对象的开发人员使用。

适用于