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

false を指定すると、現在の MarshalByRefObject オブジェクトの ID が削除されます。これにより、このオブジェクトがリモート処理の境界を越えてマーシャリングされるときに、新しい ID が割り当てられることになります。 通常は、値 false が適しています。 true を指定した場合は、現在の MarshalByRefObject オブジェクトの ID がその複製にコピーされます。これにより、リモート処理クライアントの呼び出しは、リモート サーバー オブジェクトにルーティングされることになります。

戻り値

MarshalByRefObject

現在の MarshalByRefObject オブジェクトの簡易コピー。

注釈

メソッドは、 MemberwiseClone(Boolean) 新しいオブジェクトを作成 MarshalByRefObject し、現在のオブジェクトの非静的フィールドを新しいオブジェクトにコピーすることによって、簡易コピーを作成し MarshalByRefObject ます。 フィールドが値型の場合は、フィールドのビットごとのコピーが実行されます。 フィールドが参照型の場合、参照はコピーされますが、参照先のオブジェクトはコピーされません。したがって、元のオブジェクトとその複製は、同じオブジェクトを参照します。

たとえば、オブジェクト MarshalByRefObject a と b を参照する X と呼ばれるオブジェクトについて考えてみます。オブジェクト b がオブジェクト C を参照しているとします。X の簡易コピーでは、オブジェクト A と B も参照する新しいオブジェクト X2 が作成されます。これに対し、X の詳細コピーでは新しいオブジェクト X2 が作成されます。これは、A と B のコピーである A2 と B2 の新しいオブジェクトを参照します。 B2 は、新しいオブジェクト C2 (コピー C) を参照します。インターフェイスを実装するクラスを使用して、 ICloneable オブジェクトのディープまたは浅いコピーを実行します。

オブジェクトの id は、 MarshalByRefObject リモート処理クライアント呼び出しの対象となるリモートサーバーオブジェクトとして定義されます。 既定では、オブジェクトのメンバーごとの複製には MarshalByRefObject 元のオブジェクトと同じ id が使用されます。これは通常、リモート処理の境界を越えてクライアント側にマーシャリングされるサーバー側オブジェクトの複製に対しては正しい動作ではありません。 リモート処理の境界を越えて複製を false マーシャリングする場合、または複製が true 元のオブジェクトの id を保持する場合に、複製の id を削除し、新しい id が割り当てられるようにするには、を指定します MarshalByRefObject 。 メソッドは、 MemberwiseClone(Boolean) リモートサーバーオブジェクトを実装する開発者が使用することを目的としています。

適用対象