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.
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>
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!