Respostas:
.NET 2.0 tem o ConvertAll
método pelo qual você pode passar uma função de conversor:
List<int> l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Atualizado para 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()
é compilada para o mesmo tipo de IL que está delegate(int x) { return x.ToString(); }
neste caso, o importante é ter um compilador C # (versão C #) que saiba o que =>
é. A estrutura e o tempo de execução (versão .NET) não precisam de recursos especiais para isso, então .NET 2.0 está bem aqui.
<string>
e ainda funciona. Simplesmentel1.ConvertAll(x => x.ToString());
O C # 2.0 é capaz de fazer List<T>.Convert
? Nesse caso, acho que seu melhor palpite seria usar isso com um delegado:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Algo nesse sentido.
Vote positivamente na resposta de Glenn, que provavelmente é o código correto ;-)
Você não seria capaz de convertê-lo diretamente, pois não existe conversão explícita ou implícita de int para string, teria que ser um método envolvendo .ToString (), como: -
foreach (int i in intList) stringList.Add(i.ToString());
Editar - ou como outros apontaram brilhantemente, use intList.ConvertAll (delegate (int i) {return i.ToString ();}) ;, no entanto, claramente você ainda tem que usar .ToString () e é uma conversão em vez de um elenco.
int
fosse implícita ou explicitamente conversível para string
, isso não significa que List<int>
tenha uma conversão implícita ou explícita para List<string>
.
Você tem que construir uma nova lista. As representações de bits subjacentes List<int>
e List<string>
são completamente incompatíveis - em uma plataforma de 64 bits, por exemplo, os membros individuais não têm nem mesmo o mesmo tamanho.
É teoricamente possível tratar a List<string>
como a List<object>
- isso leva você aos mundos emocionantes da covariância e da contravariância, e não é atualmente suportado por C # ou VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
substitua os parâmetros result e listOfInt para seus parâmetros