Maison > développement back-end > C++ > Comment cloner une liste générique en C #?

Comment cloner une liste générique en C #?

Susan Sarandon
Libérer: 2025-01-30 20:16:12
original
142 Les gens l'ont consulté

How to Clone a Generic List in C#?

Création de copies des listes génériques en C #

Ce guide explore différentes méthodes de duplication des listes génériques en C #. Puisque List<T> n'a pas de méthode Clone() intégrée, nous examinerons plusieurs stratégies.

Copie peu profonde pour les types de valeur

Pour les listes contenant des types de valeur (comme int, double), une simple copie superficielle est suffisante:

<code class="language-csharp">List<YourType> newList = new List<YourType>(oldList);</code>
Copier après la connexion

Copie profonde pour les types de référence: en utilisant iclonable

Si votre liste contient des types de référence et que vous avez besoin d'une copie profonde (une copie complètement indépendante des données), et que ces types implémentent l'interface ICloneable, vous pouvez utiliser cette approche:

<code class="language-csharp">List<ICloneable> oldList = new List<ICloneable>();
List<ICloneable> newList = new List<ICloneable>(oldList.Count);

oldList.ForEach(item =>
{
    newList.Add((ICloneable)item.Clone());
});</code>
Copier après la connexion

Copie profonde pour les types de référence: tirant parti des constructeurs de copie

Si votre type d'élément a un constructeur de copie mais n'implémente pas ICloneable, cette méthode est préférable:

<code class="language-csharp">List<YourType> oldList = new List<YourType>();
List<YourType> newList = new List<YourType>(oldList.Capacity); // Use Capacity for efficiency

oldList.ForEach(item =>
{
    newList.Add(new YourType(item));
});</code>
Copier après la connexion

Best Practice: Méthodes d'usine ou copie des constructeurs

Pour une copie profonde robuste, il est fortement recommandé d'utiliser une méthode d'usine (par exemple, YourType.CopyFrom()) ou un constructeur de copie au sein de votre classe personnalisée. Cela fournit un plus grand contrôle et assure une copie profonde complète de toutes les variables membres.

encapsulant la logique

Pour améliorer l'organisation du code et la réutilisabilité, envisagez d'envelopper l'une de ces techniques dans une méthode d'extension ou une fonction d'assistance dédiée.

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