Respuestas:
.NET 2.0 tiene el ConvertAll
método en el que puede pasar una función de conversión:
List<int> l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Actualizado 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()
se compila con el mismo tipo de IL que delegate(int x) { return x.ToString(); }
en este caso, lo importante es tener un compilador de C # (versión de C #) que sepa qué =>
es. El marco y el tiempo de ejecución (versión .NET) no necesitan características especiales para esto, por lo que .NET 2.0 está bien aquí.
<string>
y todavía funciona. Haciéndolo justol1.ConvertAll(x => x.ToString());
¿C # 2.0 puede hacerlo List<T>.Convert
? Si es así, creo que su mejor suposición sería usar eso con un 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 en ese sentido.
Vota la respuesta de Glenn, que probablemente sea el código correcto ;-)
Usted no sería capaz de lanzar directamente ya que no existe conversión explícita o implícita de int a string, sería tiene que ser un método que implica .ToString (), tales como: -
foreach (int i in intList) stringList.Add(i.ToString());
Editar , o como otros han señalado de manera bastante brillante, use intList.ConvertAll (delegate (int i) {return i.ToString ();});, sin embargo, claramente todavía tiene que usar .ToString () y es una conversión en lugar de un molde.
int
fuera implícita o explícitamente convertible a string
, eso no significa que List<int>
tenga una conversión implícita o explícita a List<string>
.
Tienes que crear una nueva lista. Las representaciones de bits subyacentes de List<int>
y List<string>
son completamente incompatibles; en una plataforma de 64 bits, por ejemplo, los miembros individuales ni siquiera tienen el mismo tamaño.
En teoría, es posible tratar a List<string>
como a List<object>
: esto lo lleva a los emocionantes mundos de la covarianza y la contravarianza, y actualmente no es compatible con C # o VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
reemplace el resultado de los parámetros y listOfInt a sus parámetros