Flache Kopie

Definition - Was bedeutet flache Kopie?

Bei der flachen Kopie in C # wird ein Klon eines Objekts erstellt, indem eine neue Instanz desselben Typs wie das ursprüngliche Objekt instanziiert und die nicht statischen Elemente des vorhandenen Objekts in den Klon kopiert werden. Die Mitglieder des Wertetyps werden Stück für Stück kopiert, während die Mitglieder des Referenztyps so kopiert werden, dass das referenzierte Objekt und sein Klon auf dasselbe Objekt verweisen.

Im Allgemeinen wird eine flache Kopie verwendet, wenn die Leistung eine der Anforderungen ist, zusammen mit der Bedingung, dass das Objekt nicht in der gesamten Anwendung mutiert wird. Durch Übergeben des Klons mit unveränderlichen Daten wird die Möglichkeit einer Beschädigung durch einen beliebigen 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.

Eine flache Kopie wird auch als Mitgliedskopie bezeichnet.

Technische.me erklärt Shallow Copy

Die flache Kopie ähnelt der tiefen Kopie bei der Zuordnung jedes Mitglieds eines Objekts zu der 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.

Stellen Sie sich beispielsweise ein Mitarbeiterobjekt vor, das Details zu persönlichen Informationen enthält, 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, die dem ursprünglichen Mitarbeiterobjekt gehören.

Die Methoden zum Ausführen einer flachen Kopie 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 Möglichkeit bietet, flache Kopien durchzuführen, jedoch mit Leistungsaufwand
  • Verwenden Sie eine Serialisierungsmethode, die langsamer als die Reflexion ist, aber automatisiert und einfach

Eine flache Kopie kann nicht verwendet werden, wenn das Objekt Elemente des Referenztyps enthält, die häufig geändert werden. Diese Definition wurde im Kontext von C # geschrieben