Heim > Backend-Entwicklung > C++ > Wie kann ich eine Liste in C# tief kopieren, um gemeinsame Referenzen zu vermeiden?

Wie kann ich eine Liste in C# tief kopieren, um gemeinsame Referenzen zu vermeiden?

Patricia Arquette
Freigeben: 2025-01-11 18:26:46
Original
301 Leute haben es durchsucht

How to Deep Copy a List in C# to Avoid Shared References?

Erstellen einer echten Tiefenkopie einer C#-Liste

Die Herausforderung

Die einfache Verwendung von new List<Book>(books_1) zum Klonen eines List<T> in C# erstellt keine völlig unabhängige Kopie. Änderungen an der geklonten Liste wirken sich auch auf die ursprüngliche Liste aus, da sie gemeinsame Verweise auf die zugrunde liegenden Objekte enthalten.

Die Lösung: Ein Deep-Copy-Ansatz

Um eine wirklich tiefe Kopie zu erhalten und sicherzustellen, dass Änderungen an der geklonten Liste keine Auswirkungen auf das Original haben, verwenden Sie die folgende Technik:

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

Dieser Code durchläuft jedes Book-Objekt in der Originalliste (books_1). Für jedes Objekt wird mithilfe eines Konstruktors ein neues Book-Objekt erstellt (hier impliziert, vorausgesetzt, dass Book über einen Konstruktor verfügt, der title als Argument verwendet). Diese neu erstellten Book-Objekte werden dann einer neuen Liste (books_2) hinzugefügt. Dies garantiert, dass books_2 völlig unabhängige Kopien der Daten von books_1 enthält.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste in C# tief kopieren, um gemeinsame Referenzen zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage