2012-04-12 269 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()方法。