Inhaltsverzeichnis:
Definition - Was bedeutet Flachkopie?
Flache Kopie in C # ist das Erstellen eines Klons eines Objekts, indem eine neue Instanz des gleichen Typs wie das ursprüngliche Objekt instanziiert und die nicht statischen Elemente des vorhandenen Objekts in den Klon kopiert werden. Die Elemente des Wertetyps werden bitweise kopiert, während die Elemente des Referenztyps so kopiert werden, dass sich das referenzierte Objekt und sein Klon auf dasselbe Objekt beziehen.
Im Allgemeinen wird eine flache Kopie verwendet, wenn die Leistung eine der Anforderungen ist, zusammen mit der Bedingung, dass das Objekt in der gesamten Anwendung nicht mutiert wird. Durch die Weitergabe des Klons, der unveränderliche Daten enthält, wird die Möglichkeit der Beschädigung durch einen Code ausgeschlossen. Eine flache Kopie hat sich als effizient erwiesen, wenn Objektreferenzen die Weitergabe von Objekten nach Speicheradresse ermöglichen, sodass nicht das gesamte Objekt kopiert werden muss.
Flache Kopie wird auch als memberwise Kopie bezeichnet.
Techopedia erklärt Shallow Copy
Shallow Copy ähnelt Deep Copy in der Zuweisung jedes Elements eines Objekts zu dem eines anderen Objekts, unterscheidet sich jedoch in der Art und Weise, in der das Feld des Referenztyps kopiert wird. Anders als bei einer flachen Kopie, bei der die Referenz nur kopiert wird, wird bei einer tiefen Kopie eine neue Kopie des referenzierten Objekts erstellt.
Angenommen, ein Mitarbeiterobjekt enthält Details zu persönlichen Informationen, einschließlich einer Liste von Adressobjekten, in denen mehrere Mitarbeiteradressen gespeichert sind. Durch Ausführen einer flachen Kopie eines Mitarbeiterobjekts kann ein Klon des Mitarbeiterobjekts mit Verweisen auf dieselbe Liste von Adressobjekten erstellt werden, deren Eigentümer das ursprüngliche Mitarbeiterobjekt ist.
Die Methoden zum Durchführen eines flachen Kopiervorgangs umfassen:- Rufen Sie die MemberwiseClone-Methode des Objekts auf
- Erstellen Sie einen Klon manuell mit einer benutzerdefinierten Methode, die langwierig, aber einfach zu steuern ist
- Verwenden Sie eine Reflexionstechnik, die eine automatisierte Funktion zum Durchführen flacher Kopien bietet, jedoch mit Leistungsmehraufwand
- Verwenden Sie eine Serialisierungsmethode, die langsamer als die Reflektion ist, jedoch automatisiert und einfach