2012-04-12 10 views
112

Widziałem przykłady tego zrobione przy użyciu .ToList() na typy tablic, to wydaje się być dostępne tylko in .Net 3.5+. Pracuję z .NET Framework 2.0 na projekcie ASP.NET, który nie może zostać zaktualizowany w tym momencie, więc zastanawiałem się: czy istnieje inne rozwiązanie? Jeden, który jest bardziej elegancki niż przechodzenie przez tablicę i dodawanie każdego elementu do tej listy (co nie jest problemem, po prostu zastanawiam się, czy istnieje lepsze rozwiązanie do celów edukacyjnych)?Konwertuj tablicę łańcuchów na listę <string>

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

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

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

Jeśli mam to zrobić w ten sposób, czy jest jakiś sposób aby deallocate ociąganie tablicę z pamięci po skopiować go na mojej liście?

+1

Nie przejmuj się czyszczeniem swojego "arr", garbage collector zrobi o wiele lepszą robotę niż ty. –

+4

Ja konkretnie .. lub deweloperów w ogóle? –

+29

Wy konkretnie. I ja. W rzeczywistości wydaje mi się, że tylko Jon Skeet może zrobić własny zbiór śmieci. –

Odpowiedz

303

Po prostu użyj this constructor z List<T>. Przyjmuje dowolny argument IEnumerable<T> jako argument.

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

Z .Net 3.5 można użyć metody rozszerzenia LINQ, która (czasami) sprawia, że ​​przepływ kodu jest nieco lepszy.

Wykorzystanie wygląda następująco:

using System.Linq; 

// ... 

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

PS. Istnieje również metoda ToArray(), która działa w inny sposób.

Powiązane problemy