Maison >développement back-end >C++ >Comment créer des copies complètes de dictionnaires génériques dans .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 (
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);
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
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());
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; }
Le choix de l'approche dépend de la profondeur de clonage requise et des exigences spécifiques de votre application. Le
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!