Heim > Artikel > Backend-Entwicklung > Eine kurze Diskussion über Shallow Copy und Deep Copy in .Net
Beim Kopieren von Objekten werden die Eigenschaften eines Datenobjekts in ein anderes Objekt desselben Datentyps kopiert. In .Net werden flache und tiefe Kopien zum Kopieren von Daten zwischen Objekten verwendet. Der folgende Artikel vermittelt Ihnen einen kurzen Überblick über flache und tiefe Kopien in .Net. Ich hoffe, er wird Ihnen hilfreich sein.
Was ist eine flache Kopie?
Flache Kopie erstellt ein neues Objekt und kopiert dann die nicht statischen Felder des aktuellen Objekts in das neue Objekt. Wenn es sich bei dem Feld um einen Werttyp handelt, wird eine bitweise Kopie des Felds durchgeführt. Wenn es sich bei dem Feld um einen Referenztyp handelt, wird die eindeutige Referenz kopiert, aber das referenzierte Objekt selbst wird nicht kopiert; daher verweisen Original und Klon auf dasselbe Objekt. [Video-Tutorial-Empfehlung: ASP.NET-Tutorial]
Eine flache Kopie eines Objekts ist ein neues Objekt, dessen Instanzvariablen mit denen des alten identisch sind Objekt. In .Net erfolgt das flache Kopieren durch die Objektmethode MemberwiseClone().
Wenn Sie ein Objekt mit einem Wert haben und eine Kopie dieses Objekts in einer anderen Variablen desselben Typs erstellen möchten, können Sie eine flache Kopie und alle zum Werttyp gehörenden Eigenschaftswerte verwenden lautet „Kopieren“, aber wenn Sie eine Eigenschaft vom Referenztyp haben, wird diese Instanz nicht kopiert, sondern nur auf die Instanz verwiesen.
Was ist eine Deep Copy?
Deep Copy ist der Prozess, bei dem ein neues Objekt erstellt und dann die Felder des aktuellen Objekts in das neu erstellte Objekt kopiert werden, um eine vollständige Kopie des internen Referenztyps zu erstellen. Wenn es sich bei dem Feld um einen Werttyp handelt, wird eine bitweise Kopie des Felds durchgeführt. Wenn es sich bei dem Feld um einen Referenztyp handelt, wird eine neue Kopie des Referenzobjekts erstellt. Eine tiefe Kopie eines
-Objekts ist ein neues Objekt mit völlig neuen Instanzvariablen, es teilt keine Objekte mit dem alten Objekt. Beim Durchführen von Deep Copy muss die zu klonende Klasse mit [Serialisierbar] gekennzeichnet sein.
Deep Copy zielt darauf ab, alle Elemente eines Objekts zu kopieren, einschließlich direkt referenzierter Werttypelemente und indirekter Referenzelemente, bei denen es sich um Referenztypen handelt, die einen Verweis auf einen Speicherort enthalten, der die Daten enthält, und nicht auf die Daten selbst .
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über Shallow Copy und Deep Copy in .Net. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!