Der Klon der generischen Liste in der C#
In C#ist die Liste der geklonten generischen Objekte eine Herausforderung, da die gebaute -in
Klasse nicht direkt "klone ()" ist. Es gibt jedoch verschiedene Möglichkeiten, diese Funktion zu erreichen.
List<T>
Der Werttypklon
Wenn das Element der Liste ein Werttyp ist, können Sie einfach eine neue Liste erstellen, die dieselben Elemente enthält:
IClonable Cloned Referenztyp
<code class="language-csharp">List<MyValueType> newList = new List<MyValueType>(oldList);</code>
Wenn das Element ein Referenztyp ist und Sie tief kopiert werden müssen (dh die neue Liste und ihre Elemente haben nichts mit der Originalliste zu tun), können Sie die Schnittstelle verwenden:
"iClonable" im obigen Code wird durch den tatsächlichen Elementtyp ICloneable
ersetzt.
<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>
ICloneable
nicht unterstützt, aber einen Kopierkonstruktor hat, können Sie die folgenden Methoden verwenden:
Diese Methode verwendet einen Kopierkonstruktor, um eine neue Instanz jedes Elements zu erstellen.
ICloneable
Benutzerdefinierte Klonmethode
<code class="language-csharp">List<MyReferenceType> oldList = new List<MyReferenceType>(); List<MyReferenceType> newList = new List<MyReferenceType>(oldList.Count); oldList.ForEach(item => newList.Add(new MyReferenceType(item)));</code>
Um die Methoden in der benutzerdefinierten Klonierungsmethode zu verkörpern:
Diese Methode akzeptiert eine generische Liste und gibt eine neue Klonliste zurück, wobei die entsprechende Klonierungsmethode gemäß der Art des Elements ausgewählt wird.
Das obige ist der detaillierte Inhalt vonWie kann man generische Listen in C#effektiv klonen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!