Le clone de la liste générique du C #
En C #, la liste des objets génériques clonés est un défi, car la classe intégrée -in
ne fait pas directement "clone ()". Cependant, il existe plusieurs façons d'atteindre cette fonction.
List<T>
Le clone de type de valeur
Si l'élément de la liste est un type de valeur, vous pouvez simplement créer une nouvelle liste contenant les mêmes éléments:
Utiliser le type de référence cloné iclonable
<code class="language-csharp">List<MyValueType> newList = new List<MyValueType>(oldList);</code>
Si l'élément est un type de référence et que vous devez être en profondeur (c'est-à-dire que la nouvelle liste et ses éléments n'ont rien à voir avec la liste originale), vous pouvez utiliser l'interface :
"iclonable" dans le code ci-dessus est remplacé par le type d'élément réel de 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>
ICloneable
mais a un constructeur de copie, vous pouvez utiliser les méthodes suivantes:
Cette méthode utilise un constructeur de copie pour créer une nouvelle instance de chaque élément.
ICloneable
Méthode du clone personnalisé
<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>
Pour plus de commodité, vous pouvez encapsuler l'une de ces méthodes dans la méthode de clonage personnalisée:
Cette méthode accepte une liste générique et renvoie une nouvelle liste de clones, en sélectionnant la méthode de clonage appropriée en fonction du type d'élément.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!