2010-03-09 12 views
10

Questa domanda potrebbe sembrare banale e anche stupida a prima vista, ma è molto più di questo.. NET conversione di array semplici in Generics di elenchi

Possiedo un array di qualsiasi tipo T (T[]) e voglio convertirlo in un Elenco generico (List<T>). C'è un altro modo oltre a creare una lista generica, attraversando l'intera matrice e aggiungendo l'elemento nella lista?

Situazione attuale:

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

La mia situazione ideale:

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

Oppure:

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

Sono suggestin g gli ultimi 2 nomi di metodo come penso che il compilatore o CLR può eseguire alcune ottimizzazioni sull'intera operazione se vuole integrato.

P.S .: Io non sto parlando del Array o ArrayList Tipo

risposta

23

Se ho capito bene la tua domanda, uno dei segmenti di codice che hai funzionerà. In C#, la stringa deve essere racchiusa tra virgolette doppie, non singole.

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

Sì, lo faccio sempre ... beh, a volte. –

+0

Ci scusiamo per l'errore di quotazione. Ho risolto ora. –

+0

Questo non ha bisogno di LINQ ed è la tecnica più semplice. – softveda

10

Se si fa riferimento System.Linq, è possibile digitare:

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

esattamente come si desidera.

Anche la seconda sintassi dovrebbe funzionare.

4

Usa:

using System.Linq; 

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

Metodo ToList è il metodo LINQ. È necessario aggiungere

using System.Linq; 
1

Avete davvero bisogno di un elenco o un IList funzionerà per voi? Perché il CLR (ha codice speciale per) supporta il casting di array in interfacce di raccolta generiche, semplicemente:

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