.NET преобразование простых массивов в List Generics - PullRequest
11 голосов
/ 09 марта 2010

Этот вопрос может показаться на первый взгляд тривиальным, а также глупым, но он намного больше этого.

У меня есть массив любого типа T (T[]), и я хочу преобразовать его в универсальный список (List<T>). Есть ли другой способ, кроме создания общего списка, обхода всего массива и добавления элемента в список?

Текущая ситуация:

string[] strList = {"foo","bar","meh"};
List<string> listOfStr = new List<string>();
foreach(string s in strList)
{
    listOfStr.Add(s);
}

Моя идеальная ситуация:

string[] strList = {"foo","bar","meh"};
List<string> listOfStr = strList.ToList<string>();

Или:

string[] strList = {"foo","bar","meh"};
List<string> listOfStr = new List<string>(strList);

Я предлагаю два последних имени метода, так как я думаю, что компилятор или CLR могут выполнить некоторые оптимизации для всех операций, если он хочет встроить.

П.С .: Я не говорю о Array или ArrayList Типе

Ответы [ 5 ]

26 голосов
/ 09 марта 2010

Если я правильно понимаю ваш вопрос, один из ваших сегментов кода будет работать.В C # строка должна быть заключена в двойные кавычки, а не в одинарные.

string[] strList = {"foo","bar","meh"};
List<string> listOfStr = new List<string>(strList);
10 голосов
/ 09 марта 2010

Если вы ссылаетесь System.Linq, вы можете ввести:

string[] strList = {'foo','bar','meh'}; 
List<string> listOfStr = strList.ToList(); 

Точно так же, как вы хотите.

Второй синтаксис также должен работать.

4 голосов
/ 09 марта 2010
object[] array = new object[10];
List<object> list = array.ToList();

Метод ToList - это метод linq. Вам нужно добавить

using System.Linq;
4 голосов
/ 09 марта 2010

Использование:

using System.Linq;

string[] strList = {'foo','bar','meh'};
List<string> listOfStr = strList.ToList();
1 голос
/ 30 июня 2015

Вам действительно нужен список, или IList будет работать для вас? Поскольку CLR (имеет специальный код для) поддерживает приведение массивов к универсальным интерфейсам коллекций, просто:

string[] strList = {"foo","bar","meh"};
IList<string> listOfStr = (IList<string>)strList;
...