Convertir un tableau de chaînes en List <string>


162

J'ai vu des exemples de cela en utilisant des .ToList()types de tableaux, cela semble être disponible uniquement dans .Net 3.5+ . Je travaille avec .NET Framework 2.0 sur un projet ASP.NET qui ne peut pas être mis à niveau pour le moment, alors je me demandais: existe-t-il une autre solution? Celui qui est plus élégant que de parcourir le tableau et d'ajouter chaque élément à cette liste (ce qui n'est pas un 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 le faire de cette façon, existe-t-il un moyen de désallouer le tableau persistant de la mémoire après l'avoir copié dans ma liste?


1
Ne vous inquiétez pas pour le nettoyage de votre arr, le ramasse-miettes fera un bien meilleur travail que vous.
Mike Christensen

37
Vous spécifiquement. Et moi. En fait, je pense que seul Jon Skeet est autorisé à faire sa propre collecte des ordures.
Mike Christensen

@MikeChristensen n'a pas pu résister à voter pour le commentaire de Jon Skeet. lol
Ctrl S

Réponses:


412

Utilisez simplement ce constructeur de List<T>. Il accepte n'importe lequel IEnumerable<T>comme argument.

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

26

À partir de .Net 3.5, vous pouvez utiliser la méthode d'extension LINQ qui (parfois) améliore un peu le flux de 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 une ToArray()méthode qui fonctionne d'une autre manière.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.