Zuhause Entwicklung Was ist Deep Copy? - Definition aus techopedia

Was ist Deep Copy? - Definition aus techopedia

Inhaltsverzeichnis:

Anonim

Definition - Was bedeutet Deep Copy?

Deep Copy in C # bezieht sich auf eine Technik, mit der eine Kopie eines Objekts so erstellt wird, dass sie Kopien beider Instanzelemente und der Objekte enthält, auf die von Referenzelementen verwiesen wird.


Deep Copy soll alle Elemente eines Objekts kopieren, einschließlich der direkt referenzierten Elemente (vom Werttyp) und der indirekt referenzierten Elemente eines Referenztyps, der einen Verweis (Zeiger) auf einen Speicherort enthält, der Daten enthält, anstatt den Daten selbst. Deep Copy wird in Szenarien verwendet, in denen eine neue Kopie (Klon) ohne Bezugnahme auf die Originaldaten erstellt wird.

Techopedia erklärt Deep Copy

Deep Copy unterscheidet sich von Shallow Copy in der Art und Weise, in der die Referenztypelemente des Objekts kopiert werden. In beiden Fällen wird beim Kopieren der Feldelemente des Werttyps eine bitweise Kopie des Felds durchgeführt. Beim Kopieren von Feldern des Referenztyps wird beim flachen Kopieren nur die Referenz kopiert, während beim tiefen Kopieren eine neue Kopie des referenzierten Objekts ausgeführt wird.


Deep Copy kann anhand eines Beispiels veranschaulicht werden, indem ein Employee-Objekt mit AddressInfo als Element des Referenztyps zusammen mit anderen Elementen des Werttyps betrachtet wird. Eine vertiefte Kopie von Employee erstellt ein neues Objekt, Employee2, mit Mitgliedern des Wertetyps Employee, verweist jedoch auf ein neues Objekt, AddressInfo2, das eine Kopie von AddressInfo ist.


Deep Copy kann mit einer der folgenden Methoden implementiert werden:

  • Der Kopierkonstruktor der Klasse kann mit der erforderlichen Logik zum Kopieren von Elementen des Wert- und des Referenztyps (nach ordnungsgemäßer Speicherzuweisung) implementiert werden. Diese Methode ist mühsam und fehleranfällig.
  • Mit der System.Object.MemberwiseClone-Methode können die nicht statischen Elemente des Wertetyps kopiert werden. Kopien von Objekten des Referenztyps können mit denselben Werten wie das Original erstellt und zugewiesen werden
  • Ein Objekt, das tief kopiert werden muss, kann durch Wiederherstellen in ein neues Objekt serialisiert und deerialisiert werden. Diese Methode ist automatisiert und erfordert keine Codeänderungen für Änderungen an Objektelementen. Sie ist jedoch langsamer als andere Methoden und erfordert, dass das geklonte Objekt serialisierbar ist
  • Reflexion mit Rekursion kann verwendet werden, um eine flache Kopie zu erhalten. An diesem Punkt kann der für eine tiefe Kopie erforderliche zusätzliche Code hinzugefügt werden. Diese Methode ist automatisiert und erfordert keine Codeänderungen für das Hinzufügen oder Entfernen von Feldern im Objekt. Es ist langsamer und in Umgebungen mit teilweiser Vertrauenswürdigkeit nicht zulässig
  • Es kann ein Zwischensprachencode verwendet werden, der schneller ist, jedoch zu einer geringeren Lesbarkeit des Codes und zu schwierigen Wartungsarbeiten führt

So implementieren Sie Deep Copy:

  • Das Objekt muss genau definiert sein und darf nicht beliebig sein
  • Objekteigenschaften werden nicht berücksichtigt
  • Das Klonen muss für spezielle Fälle (z. B. Objekte mit nicht verwalteten Referenzen) mit Intelligenz automatisiert werden.
Was ist Deep Copy? - Definition aus techopedia