Подтвердить что ты не робот

Преобразование массива строк в список <string>

Я видел примеры этого, используя .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);
}

Если мне нужно это сделать, есть ли способ освободить задерживающий массив из памяти после того, как я его скопирую в свой список?

4b9b3361

Ответ 1

Просто используйте этот конструктор List<T>. Он принимает любой IEnumerable<T> в качестве аргумента.

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

Ответ 2

Из .Net 3.5 вы можете использовать метод расширения LINQ, который (иногда) делает поток кода немного лучше.

Использование выглядит следующим образом:

using System.Linq; 

// ...

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

PS. Также существует метод ToArray(), который работает по-другому.