Teilen über


MarshalByRefObject.MemberwiseClone(Boolean) Methode

Definition

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.

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

Parameter

cloneIdentity
Boolean

false zum Löschen der Identität des aktuellen MarshalByRefObject-Objekts. Dies führt dazu, dass dem Objekt eine neue Identität zugewiesen wird, wenn es über eine Remotegrenze gemarshallt wird. Der Wert false ist in der Regel geeignet. true, wenn die Identität des aktuellen MarshalByRefObject in dessen Klon kopiert werden soll. Das führt dazu, dass Remoteclient-Aufrufe an das Remoteserverobjekt weitergeleitet werden.

Gibt zurück

Eine flache Kopie des aktuellen MarshalByRefObject-Objekts.

Hinweise

Die MemberwiseClone(Boolean) Methode erstellt eine flache Kopie, indem sie ein neues MarshalByRefObject Objekt erstellt und dann die nichtstatischen Felder des aktuellen MarshalByRefObject Objekts in das neue Objekt kopiert. Wenn ein Feld ein Werttyp ist, wird eine Bit-für-Bit-Kopie des Felds ausgeführt. Wenn ein Feld ein Verweistyp ist, wird der Verweis kopiert, aber das referenzierte Objekt nicht. daher verweisen das ursprüngliche Objekt und sein Klon auf dasselbe Objekt.

Betrachten Sie beispielsweise ein MarshalByRefObject Objekt namens X, das auf Objekte A und B verweist. Objekt B verweist wiederum auf Objekt C. Eine flache Kopie von X erstellt das neue Objekt X2, das auch auf die Objekte A und B verweist. Im Gegensatz dazu erstellt eine tiefe Kopie von X ein neues Objekt X2, das auf die neuen Objekte A2 und B2 verweist, bei denen es sich um Kopien von A und B2 handelt. B2 verweist wiederum auf das neue Objekt C2, bei dem es sich um eine Kopie C handelt. Verwenden Sie eine Klasse, die die ICloneable Schnittstelle implementiert, um eine tiefe oder flache Kopie eines Objekts auszuführen.

Die Identität eines MarshalByRefObject Objekts wird als das Remoteserverobjekt definiert, das das Ziel eines Remotingclientaufrufs ist. Standardmäßig weist der memberweise Klon eines MarshalByRefObject Objekts dieselbe Identität wie das ursprüngliche Objekt auf. Dies ist in der Regel nicht das richtige Verhalten für Klone serverseitiger Objekte, die über eine Remotinggrenze auf die Clientseite gemarst werden. Geben Sie falsean, was normalerweise geeignet ist, um die Identität des Klons zu löschen und eine neue Identität zuzuweisen, wenn der Klon über eine Remotinggrenze gemarst wird, oder true um zu bewirken, dass der Klon die Identität des ursprünglichen MarshalByRefObject Objekts behält. Die MemberwiseClone(Boolean) Methode soll von Entwicklern verwendet werden, die Remoteserverobjekte implementieren.

Gilt für: