¿Puedes lanzar un List<int>
to de List<string>
alguna manera?
Sé que podría recorrer y .ToString () la cosa, pero un elenco sería increíble.
Estoy en C # 2.0 (por lo que no LINQ ).
.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 quedelegate(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:Algo en ese sentido.
Vota la respuesta de Glenn, que probablemente sea el código correcto ;-)
fuente
Puedes usar:
fuente
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: -
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.
fuente
int
fuera implícita o explícitamente convertible astring
, eso no significa queList<int>
tenga una conversión implícita o explícita aList<string>
.Tienes que crear una nueva lista. Las representaciones de bits subyacentes de
List<int>
yList<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 aList<object>
: esto lo lleva a los emocionantes mundos de la covarianza y la contravarianza, y actualmente no es compatible con C # o VB.NET.fuente
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
reemplace el resultado de los parámetros y listOfInt a sus parámetros
fuente