.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;