2012-04-12 267 views
112

我已經在陣列類型上看到了使用.ToList()完成的示例,這似乎僅適用於in .Net 3.5+。我正在.NET Framework 2.0上處理目前無法升級的ASP.NET項目,所以我想知道:還有其他解決方案嗎?比循環數組並添加每個元素到這個List更優雅(這是沒有問題的;我只是想知道是否有更好的解決方案用於學習目的)?將字符串數組轉換爲列表<string>

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

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

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

如果我必須這樣做,有沒有辦法從內存中釋放留下的數組後,我將它複製到我的列表中?

+1

不用擔心清理你的'arr',垃圾回收器會比你做得更好。 – 2012-04-12 18:20:11

+4

我特意......還是一般的開發者? – 2013-04-26 14:50:46

+29

你具體。和我。事實上,我認爲只有Jon Skeet可以做自己的垃圾收集。 – 2013-04-26 18:59:08

回答

303

只需使用this constructorList<T>即可。它接受任何IEnumerable<T>作爲論點。

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

從.net 3.5開始,您可以使用LINQ擴展方法(有時會)使代碼流更好一些。

用法是這樣的:

using System.Linq; 

// ... 

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

PS。還有其他方式的ToArray()方法。