MarshalByRefObject.MemberwiseClone(Boolean) メソッド

定義

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

protected MarshalByRefObject MemberwiseClone (bool cloneIdentity);

パラメーター

cloneIdentity
Boolean

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

戻り値

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

注釈

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

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

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

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1