Heim > Backend-Entwicklung > C++ > Wie kann ich ein generisches .NET-Wörterbuch tief klonen?

Wie kann ich ein generisches .NET-Wörterbuch tief klonen?

DDD
Freigeben: 2024-12-30 16:46:13
Original
795 Leute haben es durchsucht

How to Deep Clone a .NET Generic Dictionary?

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 erläutert.

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());
Nach dem Login kopieren

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);
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage