.NET преобразования простых массивов в список обобщений

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

У меня есть массив любого типа 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);

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

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

Ответ 1

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

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

Ответ 2

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

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

точно так, как вы этого хотите.

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

Ответ 3

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

using System.Linq;

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

Ответ 4

object[] array = new object[10];
List<object> list = array.ToList();

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

using System.Linq;

Ответ 5

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

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