Dize dizisini <string> Listesine dönüştür


162

Ben .ToList()dizi türleri kullanılarak yapılan bu örnekler gördüm , bu sadece .Net 3.5 + kullanılabilir gibi görünüyor . Şu anda yükseltilemeyen bir ASP.NET projesinde .NET Framework 2.0 ile çalışıyorum, bu yüzden merak ediyordum: başka bir çözüm var mı? Bir dizi üzerinden döngü ve her öğeyi bu listeye eklemek daha zarif (ki sorun değil; Ben sadece öğrenme amaçlı daha iyi bir çözüm olup olmadığını merak ediyorum)?

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

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

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

Bunu bu şekilde yapmak zorunda kalırsam, kalan diziyi listeme kopyaladıktan sonra bellekten ayırmanın bir yolu var mı?


1
Temizlik konusunda endişelenmeyin arr, çöp toplayıcı bundan daha iyi bir iş çıkarır.
Mike Christensen

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

@MikeChristensen Jon Skeet yorumu için buna karşı koyamadım. lol
Ctrl S

Yanıtlar:


412

Sadece kullanmak bu kurucu ait List<T>. Herhangi birini IEnumerable<T>argüman olarak kabul eder .

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

26

Net 3.5'ten (bazen) kod akışını biraz daha iyi hale getiren LINQ genişletme yöntemini kullanabilirsiniz.

Kullanım şöyle görünür:

using System.Linq; 

// ...

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

PS. ToArray()Başka bir şekilde çalışan bir yöntem de var .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.