Heim >Backend-Entwicklung >C++ >Wie erstellt man tiefe Listenkopien für echte Objektunabhängigkeit?

Wie erstellt man tiefe Listenkopien für echte Objektunabhängigkeit?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-11 18:32:44142Durchsuche

How to Create Deep Copies of List for True Object Independence?

Erreichen echter Objektunabhängigkeit mit tiefen Kopien von Listen

Der Beispielcode zeigt zwei Listen (List<Book> books_1 und List<Book> books_2), die Book-Objekte enthalten. Eine einfache Zuweisung lässt books_2 als eine Kopie von books_1 erscheinen, aber Änderungen an books_2 wirken sich auch auf books_1 aus, da sie Verweise auf dieselben Book-Objekte haben.

Die Bedeutung des Deep Cloning

Um wirklich unabhängige Kopien zu erstellen, müssen wir gemeinsame Referenzen vermeiden. Dazu müssen völlig neue Book Objekte erstellt und mit Daten aus den Originalen gefüllt werden – ein Vorgang, der Deep Copying genannt wird.

Deep Copying implementieren

Tiefe Kopien können mithilfe eines Lambda-Ausdrucks mit den Methoden Select oder ConvertAll effizient erstellt werden:

Verwenden von Select:

<code class="language-csharp">List<Book> books_2 = books_1.Select(book => new Book(book.title)).ToList();</code>

Verwenden von ConvertAll:

<code class="language-csharp">List<Book> books_2 = books_1.ConvertAll(book => new Book(book.title));</code>

Beide Ansätze generieren neue Book-Instanzen innerhalb des Lambda-Ausdrucks und kopieren die title-Eigenschaft aus den ursprünglichen Book-Objekten. Die resultierende books_2-Liste enthält völlig neue, unabhängige BookObjekte.

Vorteile von Deep Copy

Deep Copying stellt sicher, dass Änderungen an books_2 keine Auswirkungen auf books_1 haben. Dies ist von entscheidender Bedeutung, wenn Sie mit einer geänderten Kopie arbeiten müssen, ohne die Originaldaten zu verändern. Dieser Ansatz garantiert die Datenintegrität und verhindert unbeabsichtigte Nebenwirkungen.

Das obige ist der detaillierte Inhalt vonWie erstellt man tiefe Listenkopien für echte Objektunabhängigkeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn