Вопрос

Можете ли вы бросить 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 на ваши параметры

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top