Maison > développement back-end > C++ > Comment créer une véritable copie complète d'une liste C# ?

Comment créer une véritable copie complète d'une liste C# ?

Patricia Arquette
Libérer: 2025-01-11 18:47:43
original
161 Les gens l'ont consulté

How to Create a True Deep Copy of a C# List?

Une véritable méthode de copie approfondie pour créer une liste

Présentation

Dans de nombreux scénarios de programmation, il est crucial de créer une copie véritablement indépendante de la structure de données d'origine. Pour List en C#, il est crucial de comprendre comment implémenter la copie approfondie.

Question

Considérez l'extrait de code suivant :

<code class="language-csharp">List<Book> books_1 = new List<Book>();
books_1.Add(new Book("One"));
books_1.Add(new Book("Two"));
books_1.Add(new Book("Three"));
books_1.Add(new Book("Four"));

List<Book> books_2 = new List<Book>(books_1);

books_2[0].title = "Five";
books_2[1].title = "Six";

// 对books_2的更改会反映在books_1中
textBox1.Text = books_1[0].title;
textBox2.Text = books_1[1].title;</code>
Copier après la connexion

Bien que ce code crée une nouvelle liste, l'objet Book dans books_2 est toujours une référence au même objet dans books_1. Par conséquent, les modifications apportées à books_2 affecteront books_1.

Solution

Pour créer une véritable copie complète de List, chaque élément de la liste originale doit être copié. Ceci peut être réalisé en utilisant le code suivant :

<code class="language-csharp">List<Book> books_2 = books_1.Select(book => new Book(book.title)).ToList();</code>
Copier après la connexion

Chaque objet Book dans books_1 est converti en un nouvel objet Book à l'aide de la méthode Select de LINQ. Ces nouveaux objets sont ensuite stockés dans books_2, ce qui donne lieu à une copie complète.

Vous pouvez également adopter une approche plus simple en utilisant la méthode ConvertAll de List :

<code class="language-csharp">List<Book> books_2 = books_1.ConvertAll(book => new Book(book.title));</code>
Copier après la connexion

Cette méthode renvoie une nouvelle liste où chaque élément est le résultat de la transformation de l'élément correspondant dans la liste d'origine.

Avec cette approche, books_2 et books_1 sont indépendants l'un de l'autre et les modifications apportées à une liste n'affecteront pas l'autre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal