Heim > Backend-Entwicklung > C++ > Wie kann man generische Listen in C#effizient klonen?

Wie kann man generische Listen in C#effizient klonen?

Susan Sarandon
Freigeben: 2025-01-30 20:13:15
Original
546 Leute haben es durchsucht

How to Efficiently Clone Generic Lists in C#?

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 Referenztyp

tief
<code class="language-csharp">List<你的类型> newList = new List<你的类型>(oldList);</code>
Nach dem Login kopieren
Wenn die generische Liste den Referenztyp enthält und eingehend kopiert werden muss (anstelle von geringer Replikation), können Sie die folgende

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

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>
Nach dem Login kopieren
Obwohl die -Schinschnittstelle bequemer sein kann, hängt sie davon ab, dass die Intastkopie aller Mitglieder, die Probleme mit sich bringen können. Sie können das folgende alternative Schema betrachten:

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

jede vorgeschlagene Klonmethode kann in wiederverwendbaren Methoden oder Erweiterungen eingekapselt werden, um die Bequemlichkeit zu verbessern.

    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!

    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