Ответ 1
Просто используйте этот конструктор List<T>
. Он принимает любой IEnumerable<T>
в качестве аргумента.
string[] arr = ...
List<string> list = new List<string>(arr);
Я видел примеры этого, используя .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);
}
Если мне нужно это сделать, есть ли способ освободить задерживающий массив из памяти после того, как я его скопирую в свой список?
Просто используйте этот конструктор List<T>
. Он принимает любой IEnumerable<T>
в качестве аргумента.
string[] arr = ...
List<string> list = new List<string>(arr);
Из .Net 3.5 вы можете использовать метод расширения LINQ, который (иногда) делает поток кода немного лучше.
Использование выглядит следующим образом:
using System.Linq;
// ...
public void My()
{
var myArray = new[] { "abc", "123", "zyx" };
List<string> myList = myArray.ToList();
}
PS. Также существует метод ToArray()
, который работает по-другому.