Приведение List<int> к List<string> в .NET 2.0
Вопрос
Можете ли вы бросить List<int>
к List<string>
как-то?
Я знаю, что мог бы выполнить цикл и .ToString(), но приведение было бы здорово.
Я использую C# 2.0 (так что нет ЛИНК).
Решение
.NET 2.0 имеет ConvertAll
метод, в котором вы можете передать функцию конвертера:
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Другие советы
Обновлено для 2010 г.
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
Способен ли C# 2.0 сделать List<T>.Convert
?Если да, то я думаю, что лучше всего было бы использовать это с делегатом:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Что-то в этом духе.
Проголосуйте за ответ Гленна, который, вероятно, является правильным кодом ;-)
Вы не сможете напрямую привести его, поскольку не существует явного или неявного приведения из int в строку, это будет иметь быть методом, включающим .ToString(), например: -
foreach (int i in intList) stringList.Add(i.ToString());
Редактировать - или, как блестяще отметили другие, используйте intList.ConvertAll(delegate(int i) { return i.ToString();}); однако очевидно, что вам все равно придется использовать .ToString(), и это преобразование, а не приведение.
Вы можете использовать:
List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
Вам нужно создать новый список.Базовые битовые представления List<int>
и List<string>
совершенно несовместимы — например, на 64-битной платформе отдельные члены даже не одинакового размера.
Теоретически возможно лечение List<string>
как List<object>
-- это погружает вас в захватывающий мир ковариации и контравариантности и в настоящее время не поддерживается C# или VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
замените результат параметров и listOfInt на ваши параметры