Pouvez-vous lancer un List<int>
en List<string>
quelque sorte?
Je sais que je pourrais boucler et .ToString () la chose, mais un casting serait génial.
Je suis en C # 2.0 (donc pas de LINQ ).
.NET 2.0 a la ConvertAll
méthode où vous pouvez passer une fonction de convertisseur:
List<int> l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Mis à jour pour 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()
est compilée dans le même type d'IL quedelegate(int x) { return x.ToString(); }
dans ce cas, l'important est d'avoir un compilateur C # (version C #) qui sait ce que=>
c'est. Le framework et le runtime (version .NET) n'ont pas besoin de fonctionnalités spéciales pour cela, donc .NET 2.0 convient ici.<string>
et que cela fonctionne toujours. Faire justel1.ConvertAll(x => x.ToString());
C # 2.0 est-il capable de faire
List<T>.Convert
? Si tel est le cas, je pense que votre meilleure estimation serait d'utiliser cela avec un délégué:Quelque chose de ce genre.
Votez la réponse de Glenn, qui est probablement le bon code ;-)
la source
Vous pouvez utiliser:
la source
Vous ne seriez pas en mesure de le convertir directement car aucun cast explicite ou implicite n'existe de int en chaîne, il faudrait que ce soit une méthode impliquant .ToString () telle que: -
Edit - ou comme d'autres l'ont souligné assez brillamment, utilisez intList.ConvertAll (delegate (int i) {return i.ToString ();});, cependant il est clair que vous devez toujours utiliser .ToString () et c'est une conversion plutôt que un casting.
la source
int
était implicitement ou explicitement convertible enstring
, cela ne signifie pas qu'ilList<int>
a une conversion implicite ou explicite enList<string>
.Vous devez créer une nouvelle liste. Les représentations binaires sous-jacentes de
List<int>
etList<string>
sont complètement incompatibles - sur une plate-forme 64 bits, par exemple, les membres individuels n'ont même pas la même taille.Il est théoriquement possible de traiter un
List<string>
comme unList<object>
- cela vous fait entrer dans les mondes passionnants de la covariance et de la contravariance, et n'est actuellement pas pris en charge par C # ou VB.NET.la source
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
remplacez les paramètres result et listOfInt par vos paramètres
la source