Bonjour
QQ sait-il la meilleure maniere de faire un clone d'une List<T>
J'ai essayé la methode ToList mais ca cree simplement une reference de la liste originale
Moi j'aimerais creer une veritable nouvelle liste indépendante !
Bonjour
QQ sait-il la meilleure maniere de faire un clone d'une List<T>
J'ai essayé la methode ToList mais ca cree simplement une reference de la liste originale
Moi j'aimerais creer une veritable nouvelle liste indépendante !
Bonsoir,
Je ne suis pas sûr de comprendre ce que tu veux faire.
Si tu veux une seconde liste identique, pourquoi ne pas en créer une nouvelle et faire tout simplement une affectation?
NB: j'ai peut-être mal compris ce que tu veux faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //la liste de base que tu veux cloner List<T> maListe; List<T> maListeClonee = new List<T>; maListeClonee = maListe;![]()
Si tu veux une shallow copy (i.e. dédoubler la liste sans dédoubler ses éléments) :Pour une copie profonde, il faut y aller à la mano, parce que le framework se contente de proposer l'interface ICloneable sans jamais en faire quoi que ce soit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part List<Truc> laCopie = new List<Truc>(loriginale);
J'ai vérifié avec Reflector :
Donc ça renvoie bien une nouvelle liste...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source) { if (source == null) { throw Error.ArgumentNull("source"); } return new List<TSource>(source); }
Mais les éléménts eux-mêmes ne sont pas copiés en revanche, les références pointent vers les mêmes objets, sauf s'ils sont de type valeur (struct)
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Si je me rappelle bien, une solution, c'est de serializer ta liste sur un memorystream, et de le deserializer en List
Je dois meme avoir un exemple qui traine qq part...Mais ou ?![]()
Partager