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.