153 votes

Convertir un tableau de chaînes de caractères en List<string>.

J'ai vu des exemples de ce type d'utilisation en utilisant .ToList() sur les types de tableau, cela semble être disponible uniquement en .Net 3.5 et plus . Je travaille avec .NET Framework 2.0 sur un projet ASP.NET qui ne peut pas être mis à niveau pour le moment, et je me demandais donc : existe-t-il une autre solution ? Une solution plus élégante que de parcourir le tableau en boucle et d'ajouter chaque élément à cette liste (ce qui ne pose aucun problème ; je me demande simplement s'il existe une meilleure solution à des fins d'apprentissage) ?

string[] arr = { "Alpha", "Beta", "Gamma" };

List<string> openItems = new List<string>();

foreach (string arrItem in arr)
{
    openItems.Add(arrItem);
}

Si je dois procéder de cette façon, existe-t-il un moyen de désallouer le tableau qui traîne en mémoire après l'avoir copié dans ma liste ?

388voto

Shedal Points 6482

Il suffit d'utiliser ce constructeur de List<T> . Il accepte tout IEnumerable<T> comme argument.

string[] arr = ...
List<string> list = new List<string>(arr);

31voto

andrew.fox Points 320

À partir de .Net 3.5, vous pouvez utiliser la méthode d'extension LINQ qui (parfois) améliore un peu la fluidité du code.

L'utilisation ressemble à ceci :

using System.Linq; 

// ...

public void My()
{
    var myArray = new[] { "abc", "123", "zyx" };
    List<string> myList = myArray.ToList();
}

PS. Il y a aussi ToArray() méthode qui fonctionne d'une autre manière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X