2012-04-12 31 views
112

dizisine dönüştürme Dizi türleri için .ToList() kullanılarak yapılan bunun örnekleri gördüm, bu yalnızca in .Net 3.5+ kullanılabilir görünüyor. Şu anda yükseltilemeyen bir ASP.NET projesinde .NET Framework 2.0 ile çalışıyorum, bu yüzden merak ettim: başka bir çözüm var mı? Bir dizi boyunca döngü yapmaktan ve her bir öğeyi bu listeye eklemekten daha zarif olanı (sorun değil; öğrenme amaçları için daha iyi bir çözüm olup olmadığını merak ediyorum)?Dizeler dizisini <string>

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

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

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

ben bu şekilde yapmak zorunda varsa, benim listesine kopyaladıktan sonra bellekten kalıcı dizi ayırması için bir yol var mı?

+1

Arrınızı temizleme konusunda endişelenmeyin, çöp toplayıcı bunu yapacaklarından çok daha iyi bir iş çıkarır. –

+4

Me özellikle .. veya geliştiriciler genel olarak? –

+29

Özellikle siz. Ve ben. Aslında, sadece Jon Skeet'in kendi çöp koleksiyonunu yapmasına izin verildiğini düşünüyorum. –

cevap

303

List<T> ürününün this constructor numaralarını kullanın. Herhangi bir bağımsız değişken olarak IEnumerable<T> kabul eder.

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

.Net 3.5'den (bazen) kod akışını biraz daha iyi hale getiren LINQ uzantısı yöntemini kullanabilirsiniz.

Kullanımı şuna benzer:

using System.Linq; 

// ... 

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

PS. Başka şekilde çalışan ToArray() yöntemi de vardır.

İlgili konular