Maison >développement back-end >C++ >Comment créer des copies complètes de liste pour une véritable indépendance des objets ?

Comment créer des copies complètes de liste pour une véritable indépendance des objets ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-11 18:32:44229parcourir

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

Atteindre une véritable indépendance des objets avec des copies complètes de listes

L'exemple de code montre deux listes (List<Book> books_1 et List<Book> books_2) contenant des Book objets. Une simple affectation fait que books_2 apparaît comme une copie de books_1, mais les modifications apportées à books_2 affectent également books_1 car ils partagent des références aux mêmes Book objets.

L'importance du clonage profond

Pour créer des copies véritablement indépendantes, il faut éviter les références partagées. Cela nécessite de créer des Book objets entièrement nouveaux et de les remplir avec les données des originaux – un processus appelé copie approfondie.

Mise en œuvre de la copie approfondie

Des copies complètes peuvent être créées efficacement à l'aide d'une expression lambda avec les méthodes Select ou ConvertAll :

Utilisation de Select :

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

Utilisation de ConvertAll :

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

Les deux approches génèrent de nouvelles Book instances dans l'expression lambda, copiant la propriété title des objets Book d'origine. La liste books_2 résultante contient des objets Book complètement nouveaux et indépendants.

Avantages de la copie approfondie

La copie approfondie garantit que les modifications apportées à books_2 n'affecteront pas books_1. Ceci est crucial lorsque vous devez travailler avec une copie modifiée sans altérer les données originales. Cette approche garantit l'intégrité des données et évite les effets secondaires involontaires.

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!

Déclaration:
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