Maison > développement back-end > C++ > Comment créer des copies complètes de dictionnaires génériques dans .NET ?

Comment créer des copies complètes de dictionnaires génériques dans .NET ?

Patricia Arquette
Libérer: 2025-01-04 15:16:39
original
374 Les gens l'ont consulté

How to Create Deep Copies of Generic Dictionaries in .NET?

Création de copies complètes de dictionnaires génériques dans .NET

Clonage ou réalisation de copies complètes de dictionnaires génériques () est essentiel pour préserver la structure des données d'origine sans affecter l'original. Voici quelques approches :

Méthode ToDictionary() avec clonage superficiel :

Si vous n'avez besoin que d'une copie superficielle où les références de clé et de valeur sont copiées, le < voir cref="System.Linq.Enumerable.ToDictionary{TSource, TKey, TElement}(IEnumerable{TSource}, Func{TSource, TKey}, Func{TSource, TElement})"/> méthode peut être utilisée. L'exemple suivant montre une copie superficielle :

var originalDict = new Dictionary<string, int> { { "Key1", 1 }, { "Key2", 2 } };
var shallowCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => entry.Value);
Copier après la connexion

Méthode ToDictionary() avec clonage profond :

Si vous avez besoin d'une copie profonde dans laquelle les objets imbriqués sont également copiés de manière récursive , vous pouvez utiliser le interface pour implémenter le clonage sur le type valeur. L'exemple suivant montre une copie complète utilisant le clonage :

class CloneableValue : ICloneable
{
    public int Value { get; set; }

    public object Clone()
    {
        return new CloneableValue { Value = this.Value };
    }
}

Dictionary<string, CloneableValue> originalDict = new Dictionary<string, CloneableValue> { { "Key1", new CloneableValue() { Value = 1 } } };
var deepCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => (CloneableValue)entry.Value.Clone());
Copier après la connexion

Méthode de clonage personnalisée :

Vous pouvez également créer une méthode de clonage personnalisée spécifique à votre structure de données. Cette méthode parcourrait le dictionnaire, créerait de nouvelles instances des objets clé et valeur et attribuerait les valeurs en conséquence. Voici un exemple :

public static Dictionary<string, T> CloneDictionary<T>(Dictionary<string, T> originalDict)
{
    Dictionary<string, T> cloneDict = new Dictionary<string, T>();
    foreach (KeyValuePair<string, T> entry in originalDict)
    {
        cloneDict.Add(entry.Key, (T)entry.Value);
    }
    return cloneDict;
}
Copier après la connexion

Le choix de l'approche dépend de la profondeur de clonage requise et des exigences spécifiques de votre application. Le La méthode avec des sélecteurs de clés et d'éléments appropriés offre un moyen polyvalent de créer des copies superficielles et profondes.

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