2010-03-09 6 views
10

Cette question peut sembler triviale et aussi stupide au premier abord, mais c'est beaucoup plus que cela..NET convertir des tableaux simples en Liste Generics

J'ai un tableau de tout type T (T[]) et je veux le convertir en liste générique (List<T>). Existe-t-il un autre moyen de créer une liste générique, de parcourir l'ensemble du tableau et d'ajouter l'élément dans la liste?

Situation actuelle:

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(); 
foreach(string s in strList) 
{ 
    listOfStr.Add(s); 
} 

Ma situation idéale:

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = strList.ToList<string>(); 

Ou:

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(strList); 

Je suis suggestin g les 2 derniers noms de méthodes que je pense que le compilateur ou CLR peut effectuer quelques optimisations sur l'ensemble des opérations si elle veut être intégrée.

P.S .: Je ne parle pas du Array ou ArrayList type

Répondre

23

Si je comprends bien votre question, l'un des segments de code que vous avez fonctionnera. En C#, la chaîne doit être placée entre guillemets doubles, et non unique.

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(strList); 
+0

Oui, je le fais tout le temps ... eh bien, parfois. –

+0

Désolé pour l'erreur de devis. Je l'ai réparé maintenant. –

+0

Cela n'a pas besoin de LINQ et c'est la technique la plus simple. – softveda

10

Si vous faites référence à System.Linq, vous pouvez taper:

string[] strList = {'foo','bar','meh'}; 
List<string> listOfStr = strList.ToList(); 

exactement comme vous voulez.

La deuxième syntaxe devrait également fonctionner.

4

Utilisation:

using System.Linq; 

string[] strList = {'foo','bar','meh'}; 
List<string> listOfStr = strList.ToList(); 
4
object[] array = new object[10]; 
List<object> list = array.ToList(); 

Méthode ToList est du linq. Vous devez ajouter

using System.Linq; 
1

Avez-vous vraiment besoin d'une liste, ou un IList fonctionnera-t-il pour vous? Parce que le CLR (a un code spécial) prend en charge la conversion de tableaux en interfaces de collecte génériques, simplement:

string[] strList = {"foo","bar","meh"}; 
IList<string> listOfStr = (IList<string>)strList;