System.MarshalByRefObject.MemberwiseClone 方法 (Boolean)
方法描述
创建当前 MarshalByRefObject 对象的浅表副本。
语法定义
protected MarshalByRefObject MemberwiseClone( bool cloneIdentity )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
cloneIdentity | System-Boolean | 如果要删除当前 MarshalByRefObject 对象的标识,则为 false,这使该对象在跨远程边界封送时分配一个新标识。值 false 通常比较合适。如果为 true,则将当前 MarshalByRefObject 对象的标识复制到它的克隆项,这会将远程客户端调用路由到远程服务器对象。 |
返回值 | System.MarshalByRefObject | 当前 MarshalByRefObject 对象的浅表副本。 |
提示和注释
MemberwiseClone(Boolean) 方法创建一个浅表副本,方法是创建一个新的 MarshalByRefObject 对象,然后将当前 MarshalByRefObject 对象的非静态字段复制到该新对象。 如果字段是值类型的,则对该字段执行逐位复制。 如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。
例如,考虑引用对象 A 和 B 的被称为 X 的 MarshalByRefObject 对象。 对象 B 依次引用对象 C。 X 的浅表副本创建一个新对象 X2,该对象也引用对象 A 和 B。 相比而言,X 的深层副本创建一个新对象 X2,该对象引用新对象 A2 和 B2(分别为 A 和 B 的副本)。 B2 又引用新对象 C2,C2 是 C 的副本。 使用实现了 ICloneable 接口的类,可为对象创建深层副本或浅表副本。
MarshalByRefObject 对象的标识定义为远程服务器对象,该远程服务器对象是远程客户端调用的目标。 默认情况下,MarshalByRefObject 对象针对成员的复本与原始对象具有相同标识,这通常不是服务器端对象复本(跨远程边界封送到客户端)的正确行为。 若要删除复本的标识并在跨远程边界封送复本时向其分配新标识,则指定 false(通常合理),或者指定 true 以便复本保留原始 MarshalByRefObject 对象的标识。 MemberwiseClone(Boolean) 方法旨在由开发人员用于实现远程服务器对象。
System.MarshalByRefObject.MemberwiseClone 方法 (Boolean)例子
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。