Heim > Backend-Entwicklung > C++ > Wie erstelle ich tiefe Kopien generischer Wörterbücher in .NET?

Wie erstelle ich tiefe Kopien generischer Wörterbücher in .NET?

Patricia Arquette
Freigeben: 2025-01-04 15:16:39
Original
334 Leute haben es durchsucht

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

Erstellen tiefer Kopien generischer Wörterbücher in .NET

Klonen oder Durchführen tiefer Kopien generischer Wörterbücher () ist wichtig, um die ursprüngliche Datenstruktur beizubehalten, ohne das Original zu beeinträchtigen. Hier sind einige Ansätze:

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

ToDictionary()-Methode mit Deep Cloning:

Wenn Sie eine tiefe Kopie benötigen, bei der auch verschachtelte Objekte rekursiv kopiert werden , können Sie das verwenden. Schnittstelle zum Implementieren des Klonens für den Werttyp. Das folgende Beispiel zeigt eine tiefe Kopie mit Klonen:

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

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

Die Wahl des Ansatzes hängt von der erforderlichen Klontiefe und den spezifischen Anforderungen Ihrer Anwendung ab. Das Die Methode mit geeigneten Schlüssel- und Elementselektoren bietet eine vielseitige Möglichkeit, sowohl flache als auch tiefe Kopien zu erstellen.

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage