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 #?

Susan Sarandon
Libérer: 2025-01-30 20:13:15
original
546 Les gens l'ont consulté

How to Efficiently Clone Generic Lists in C#?

Le clonage efficace de la liste générique des génériques: dans l'analyse-profondeur

Instruction de question:

En C #, comment a fortement cloné une liste d'objets génériques? Bien que l'objet unique de la liste soit cloné, la liste elle-même n'a pas une méthode "Clone" construite.

Méthode 1: Le type de clonage

Le clone est très simple pour la liste générique des types de valeur. Créez simplement une nouvelle liste du même contenu que la liste originale:

Méthode 2: Copiez profondément le type de référence

<code class="language-csharp">List<你的类型> newList = new List<你的类型>(oldList);</code>
Copier après la connexion
Si la liste générique contient le type de référence et doit être copiée en profondeur (au lieu de la réplication peu profonde), vous pouvez utiliser la méthode d'interface suivante

:

Cette méthode garantit que tous les objets de la liste des clones sont complètement indépendants avec les objets de la liste originale.

ICloneable Méthode 3: Utilisez un constructeur de copie pour cloner

<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

Lorsque les éléments de liste ne sont pas réalisés

mais ont un constructeur en double, vous pouvez utiliser différentes stratégies de clonage:

Cette méthode utilise une copie de la nouvelle instance dans la liste des clones avec un constructeur de copie.

Autres suggestions ICloneable

<code class="language-csharp">List<你的类型> oldList = new List<你的类型>();
List<你的类型> newList = new List<你的类型>(oldList.Count);

oldList.ForEach((item) =>
{
    newList.Add(new 你的类型(item));
});</code>
Copier après la connexion
Bien que l'interface puisse fournir la commodité, elle dépend de la garantie de la copie en profondeur de tous les membres, ce qui peut apporter des problèmes. Vous pouvez considérer le schéma alternatif suivant:

Copiez le constructeur: pour le type avec un état de définition clair, le constructeur de réplication fournit une méthode plus efficace et facile à maintenir pour créer une copie de profondeur. Méthode d'usine: Une méthode similaire à

peut être utilisée pour retourner de nouvelles instances de types qui doivent être nécessaires.

ICloneable

Toute méthode de clone proposée peut être encapsulée dans des méthodes ou des extensions réutilisables pour améliorer la commodité.

    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