Sdílet prostřednictvím


MarshalByRefObject.MemberwiseClone(Boolean) Metoda

Definice

Vytvoří kopii aktuálního objektu bez MarshalByRefObject podmět.

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

Parametry

cloneIdentity
Boolean

false k odstranění identity aktuálního objektu, což způsobí přiřazení nové identity objektu při zařazování přes hranice MarshalByRefObject vzdálené komunikace. Obvykle je false vhodná hodnota . true ke zkopírování identity aktuálního objektu do jeho klonu, což způsobí směrování volání klienta vzdálené komunikace na objekt MarshalByRefObject vzdáleného serveru.

Návraty

MarshalByRefObject

Mělká kopie aktuálního MarshalByRefObject objektu.

Poznámky

Metoda vytvoří kopii bez podmět vytvořením nového objektu a zkopírováním nestatických polí aktuálního objektu MemberwiseClone(Boolean) MarshalByRefObject do nového MarshalByRefObject objektu. Pokud je pole hodnotový typ, provede se bitová kopie pole. Pokud je pole odkazový typ, zkopíruje se odkaz, ale odkazovaný objekt nikoli. Původní objekt a jeho klon proto odkazují na stejný objekt.

Představte si například objekt s názvem X, který odkazuje na objekty A a B. Objekt B pak MarshalByRefObject odkazuje na objekt C. Podoká kopie X vytvoří nový objekt X2, který také odkazuje na objekty A a B. Naopak hluboká kopie X vytvoří nový objekt X2, který odkazuje na nové objekty A2 a B2, což jsou kopie A a B. B2 pak odkazuje na nový objekt C2, což je kopie C. K provedení hloubkové nebo mělké kopie objektu použijte třídu, která implementuje ICloneable rozhraní.

Identita objektu je definována jako objekt vzdáleného serveru, který je cílem volání MarshalByRefObject klienta vzdálené komunikace. Ve výchozím nastavení má členská klon objektu stejnou identitu jako původní objekt, což obvykle není správné chování pro klony objektů na straně serveru, které jsou zařazovány napříč hranicí vzdálené komunikace na MarshalByRefObject straně klienta. Zadejte , což je obvykle vhodné, pokud chcete odstranit identitu klonu a způsobit přiřazení nové identity při zařazování klonu přes hranice vzdálené komunikace nebo způsobit, že klon zachová identitu původního false true MarshalByRefObject objektu. Tuto MemberwiseClone(Boolean) metodu mají používat vývojáři implementující objekty vzdáleného serveru.

Platí pro