将字符串数组转换为List<string>

197

我看到过使用.ToList()在数组类型上完成此操作的示例,但似乎只有在 .Net 3.5+ 中可用。 我正在使用.NET Framework 2.0开发一个ASP.NET项目,目前无法升级,因此我想知道:是否有其他解决方案? 有没有更优雅的解决方案来学习目的,而不是循环遍历数组并将每个元素添加到此列表中(这不是问题; 我只是想知道是否有更好的解决方案)?

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

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

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

如果我必须这样做,那么在将数组复制到列表后,有没有一种方法可以释放内存中残留的数组?

1
不用担心清理你的arr,垃圾回收器会比你做得更好。 - Mike Christensen
41
你。还有我。实际上,我认为只有 Jon Skeet 被允许执行自己的垃圾回收。 - Mike Christensen
@MikeChristensen 无法抗拒为Jon Skeet的评论点赞。哈哈 - Ctrl S
2个回答

495

只需使用List<T>此构造函数即可。它接受任何IEnumerable<T>类型的参数。

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

41

从 .Net 3.5 开始,你可以使用 LINQ 扩展方法来使代码流程更加流畅(有时候)。

用法如下:

using System.Linq; 

// ...

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

PS. 还有一个ToArray()方法,它的工作方式不同。


@quest4truth - Visual Studio 版本与此无关。只要您拥有 .NET 和 Linq(+ 在那里使用 System.Ling),它将在 2022 年和 VS Code 中运行。 - andrew.fox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接