2012-04-12 14 views
112

Ho visto esempi di questo fatto utilizzando .ToList() su tipi di array, questo sembra essere disponibile solo in .Net 3.5+. Sto lavorando con .NET Framework 2.0 su un progetto ASP.NET che non può essere aggiornato in questo momento, quindi mi chiedevo: c'è un'altra soluzione? Uno che è più elegante di un ciclo attraverso la matrice e l'aggiunta di ogni elemento a questa lista (che non è un problema, mi chiedo solo se c'è una soluzione migliore per scopi di apprendimento)?Converti array di stringhe in Elenco <string>

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

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

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

Se devo fare in questo modo, c'è un modo per rilasciare la matrice persistente dalla memoria dopo copio nella mia lista?

+1

Non preoccuparti di ripulire il tuo arr, il garbage collector farà molto meglio di quello che vuoi. –

+4

Io in particolare .. o gli sviluppatori in generale? –

+29

In particolare. E io. In effetti, penso che solo a Jon Skeet sia consentito fare la propria raccolta dei rifiuti. –

risposta

303

Basta usare this constructor di List<T>. Accetta qualsiasi IEnumerable<T> come argomento.

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

Da Net 3.5 è possibile utilizzare il metodo di estensione LINQ che (a volte) rende il flusso di codice di un po 'meglio.

Uso assomiglia a questo:

using System.Linq; 

// ... 

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

PS. C'è anche il metodo ToArray() che funziona in altro modo.

Problemi correlati