effizient dupliziert generische Listen in C#
Erstellen einer Kopie einer generischen Liste ist eine häufige Aufgabe in C#, obwohl der Sprache eine direkte list.Clone()
-Methode fehlt. In diesem Artikel werden verschiedene effektive Strategien zur Duplikation von Listen untersucht.
Werttypliste Duplikation:
Für Listen mit Werttypen ist das Kopieren einfach:
<code class="language-csharp">List<YourType> newList = new List<YourType>(oldList);</code>
Dies erstellt eine neue Liste mit identischen Elementen zum Original. Beachten Sie, dass dies eine flache Kopie für Werttypen ausführt.
Deep Copying Referenztyplisten:
Mit Referenztypen ist eine tiefe Kopie erforderlich, um freigegebene Objektreferenzen zu vermeiden. Wenn Ihre Elemente ICloneable
:
<code class="language-csharp">List<ICloneable> oldList = new List<ICloneable>(); List<ICloneable> newList = new List<ICloneable>(oldList.Count); oldList.ForEach(item => newList.Add((ICloneable)item.Clone()));</code>
Dies iteriert und kloniert jedes Element einzeln.
Nutzung von Kopiekonstruktoren:
Wenn Ihre Elemente Kopiekonstruktoren haben, aber nicht ICloneable
:
<code class="language-csharp">List<YourType> oldList = new List<YourType>(); List<YourType> newList = new List<YourType>(oldList.Count); oldList.ForEach(item => newList.Add(new YourType(item)));</code>
Dies verwendet den Kopierkonstruktor für jedes Element.
benutzerdefinierte Klonierungsmethoden:
Für komplexere Szenarien sollten Sie eine benutzerdefinierte Kopiermethode (z. B. YourType.CopyFrom()
) oder eine Fabrikmethode betrachten, um eine feinkörnige Kontrolle über den Klonierungsprozess zu erhalten.
Kapselung zur Wiederverwendbarkeit:
Für eine verbesserte Codeorganisation und Wiederverwendbarkeit wickeln Sie diese Ansätze in Erweiterungsmethoden oder eigenständige Helferfunktionen ein.
Das obige ist der detaillierte Inhalt vonWie kann man eine generische Liste in C#effizient duplizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!