Die effiziente Klone der generischen Liste der Generika: in -Tepth -Analyse
Frage Anweisung:
In C#wie man eine Liste generischer Objekte stark kloniert? Obwohl das einzelne Objekt in der Liste kloniert ist, fehlt der Liste selbst eine erstellte -in "Klon" -Methode.
Methode 1: Die Art des Klonen
Der Klon ist für die generische Liste der Werttypen sehr einfach. Erstellen Sie einfach eine neue Liste des gleichen Inhalts wie die ursprüngliche Liste:
Methode 2: Kopieren Sie den Referenztyptief
<code class="language-csharp">List<你的类型> newList = new List<你的类型>(oldList);</code>
-Schroasselschnittmethode verwenden:
Diese Methode stellt sicher, dass alle Objekte in der Klonliste mit den Objekten in der ursprünglichen Liste völlig unabhängig sind.
ICloneable
Methode 3: Verwenden Sie einen Kopierkonstruktor zum Klonen
<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>
Wenn die Listenelemente nicht realisiert werden
, sondern einen doppelten Konstruktor haben, können Sie verschiedene Klonierungsstrategien verwenden:Diese Methode verwendet eine Kopie der neuen Instanz in der Klonliste mit einem Kopierkonstruktor.
Andere Vorschläge ICloneable
<code class="language-csharp">List<你的类型> oldList = new List<你的类型>(); List<你的类型> newList = new List<你的类型>(oldList.Count); oldList.ForEach((item) => { newList.Add(new 你的类型(item)); });</code>
Kopieren Sie den Konstruktor: Für den Typ mit einem klaren Definitionszustand bietet der Replikationskonstruktor eine Methode, die effektiver und einfacher zu verwalten ist, um eine Tiefenkopie zu erstellen. Fabrikmethode: Eine ähnliche Methode wie
kann verwendet werden, um neue Instanzen von Typen zurückzugeben, die benötigt werden müssen.
ICloneable
Das obige ist der detaillierte Inhalt vonWie kann man generische Listen in C#effizient klonen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!