Heim >Backend-Entwicklung >C++ >Wie kann ich ein generisches .NET-Wörterbuch tief klonen?
Deep Cloning eines generischen .NET-Wörterbuchs
Das Klonen eines generischen .NET-Wörterbuchs ist von entscheidender Bedeutung, wenn Sie es beibehalten möchten Daten, ohne das Original zu verändern. In diesem Leitfaden werden die Best Practices für das tiefe Klonen eines Wörterbuchs
Flaches vs. tiefes Klonen
Eine flache Kopie erstellt ein neues Wörterbuch, das auf das referenziert Originalobjekte im Quellwörterbuch, während eine tiefe Kopie neue Objekte erstellt. In diesem Fall möchten Sie eine tiefe Kopie, um sicherzustellen, dass alle am kopierten Wörterbuch vorgenommenen Änderungen keine Auswirkungen auf das Original haben.
LINQ-basierte Lösung
Wenn Sie Wenn Sie .NET 3.5 oder höher verwenden, bietet die LINQ ToDictionary-Methode eine unkomplizierte Lösung für Deep Cloning:
var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, entry => (T)entry.Value.Clone());
Dieser Ansatz erstellt ein neues Wörterbuch mit geklonten Schlüssel-Wert-Paaren. Wenn T ICloneable jedoch nicht implementiert, können Sie eine einfache Wertzuweisung verwenden:
var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, entry => entry.Value);
Benutzerdefinierte Klonlösung
Sie können auch eine benutzerdefinierte Klonmethode implementieren verwendet Reflektion, um neue Instanzen aller Objekte im Wörterbuch zu erstellen. Wenn T ICloneable implementiert, können Sie die folgende Methode verwenden:
public static Dictionary<TKey, TValue> Clone<TKey, TValue>(Dictionary<TKey, TValue> original) { var clonedDictionary = new Dictionary<TKey, TValue>(); foreach (var entry in original) clonedDictionary.Add(entry.Key, (TValue)entry.Value.Clone()); return clonedDictionary; }
Das obige ist der detaillierte Inhalt vonWie kann ich ein generisches .NET-Wörterbuch tief klonen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!