Erstellen tiefer Kopien generischer Wörterbücher in .NET
Klonen oder Durchführen tiefer Kopien generischer Wörterbücher (
ToDictionary()-Methode mit flachem Klonen:
Wenn Sie nur eine flache Kopie benötigen, in der die Schlüssel- und Wertreferenzen kopiert werden, ist < see cref="System.Linq.Enumerable.ToDictionary{TSource, TKey, TElement}(IEnumerable{TSource}, Func{TSource, TKey}, Func{TSource, TElement})"/> Methode verwendet werden kann. Das folgende Beispiel zeigt eine flache Kopie:
var originalDict = new Dictionary<string, int> { { "Key1", 1 }, { "Key2", 2 } }; var shallowCopyDict = originalDict.ToDictionary(entry => entry.Key, entry => entry.Value);
ToDictionary()-Methode mit Deep Cloning:
Wenn Sie eine tiefe Kopie benötigen, bei der auch verschachtelte Objekte rekursiv kopiert werden , können Sie das
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());
Benutzerdefinierte Klonmethode:
Alternativ können Sie eine benutzerdefinierte Klonmethode speziell für Ihre Datenstruktur erstellen. Diese Methode würde das Wörterbuch durchlaufen, neue Instanzen der Schlüssel- und Wertobjekte erstellen und die Werte entsprechend zuweisen. Hier ein Beispiel:
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; }
Die Wahl des Ansatzes hängt von der erforderlichen Klontiefe und den spezifischen Anforderungen Ihrer Anwendung ab. Das
Das obige ist der detaillierte Inhalt vonWie erstelle ich tiefe Kopien generischer Wörterbücher in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!