Maison >développement back-end >C++ >Comment cloner efficacement les listes génériques en C #?

Comment cloner efficacement les listes génériques en C #?

DDD
DDDoriginal
2025-01-30 20:11:09594parcourir

How to Effectively Clone Generic Lists in C#?

Le clone de la liste générique du C #

En C #, la liste des objets génériques clonés est un défi, car la classe intégrée -in

ne fait pas directement "clone ()". Cependant, il existe plusieurs façons d'atteindre cette fonction.

List<T> Le clone de type de valeur

Si l'élément de la liste est un type de valeur, vous pouvez simplement créer une nouvelle liste contenant les mêmes éléments:

Utiliser le type de référence cloné iclonable

<code class="language-csharp">List<MyValueType> newList = new List<MyValueType>(oldList);</code>

Si l'élément est un type de référence et que vous devez être en profondeur (c'est-à-dire que la nouvelle liste et ses éléments n'ont rien à voir avec la liste originale), vous pouvez utiliser l'interface :

"iclonable" dans le code ci-dessus est remplacé par le type d'élément réel de ICloneable.

<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>
Utilisez le type de référence du clone du constructeur de copie

ICloneable

Si votre type d'élément ne prend pas en charge

mais a un constructeur de copie, vous pouvez utiliser les méthodes suivantes:

Cette méthode utilise un constructeur de copie pour créer une nouvelle instance de chaque élément.

ICloneable Méthode du clone personnalisé

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

oldList.ForEach(item => newList.Add(new MyReferenceType(item)));</code>

Pour plus de commodité, vous pouvez encapsuler l'une de ces méthodes dans la méthode de clonage personnalisée:

Cette méthode accepte une liste générique et renvoie une nouvelle liste de clones, en sélectionnant la méthode de clonage appropriée en fonction du type d'élément.

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