Вы можете бросить , List<int>
чтобы List<string>
каким - то образом?
Я знаю, что могу перебрать и .ToString (), но приведение было бы потрясающим.
Я использую С # 2.0 (поэтому без LINQ ).
Ответы:
В .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());
x => x.ToString()
скомпилирована для того же типа IL, что и delegate(int x) { return x.ToString(); }
в этом случае, важно иметь компилятор C # (версия C #), который знает, что это =>
такое. Платформа и среда выполнения (версия .NET) не требуют для этого специальных функций, поэтому .NET 2.0 здесь подойдет.
<string>
и это все еще работает. Делая это простоl1.ConvertAll(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(); });
Что-то в этом роде.
Проголосуйте за ответ Гленна, который, вероятно, является правильным кодом ;-)
Вы не могли бы непосредственно брось , как не существует никаких явных или неявных литая из междунар в строку, она будет иметь , чтобы быть методом , включающим .ToString () , такие как: -
foreach (int i in intList) stringList.Add(i.ToString());
Изменить - или, как другие блестяще указывали, используйте intList.ConvertAll (delegate (int i) {return i.ToString ();});, однако очевидно, что вам все равно придется использовать .ToString (), и это преобразование, а не в ролях.
int
был явно или неявно преобразован в string
, это не означает, что он List<int>
имеет неявное или явное преобразование в List<string>
.
Вы должны составить новый список. Базовые битовые представления List<int>
и List<string>
полностью несовместимы - например, на 64-битной платформе отдельные члены даже не одного размера.
Теоретически можно рассматривать a List<string>
как a List<object>
- это вводит вас в захватывающие миры ковариации и контравариантности и в настоящее время не поддерживается C # или VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
замените параметры result и listOfInt на свои параметры