Question

Pouvez-vous jeter un List<int> pour List<string> en quelque sorte?

Je sais que je pourrais faire une boucle par et .ToString() de la chose, mais un casting serait génial.

Je suis en C# 2.0 (donc pas de LINQ).

Était-ce utile?

La solution

.NET 2.0 ConvertAll méthode où vous pouvez passer d'une fonction convertisseur:

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });

Autres conseils

Mise à jour pour 2010

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());

Est C# 2.0 capable de faire List<T>.Convert?Si oui, je pense que votre meilleure estimation serait de l'utiliser avec un délégué:

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });

Quelque chose le long de ces lignes.


Upvote Glenn réponse, ce qui est probablement le bon code ;-)

Vous ne pourrez pas directement exprimés comme aucun explicite ou implicite cast existe de int en string, il serait ont pour être une méthode impliquant la .ToString() telles que:-

foreach (int i in intList) stringList.Add(i.ToString());

Modifier - ou comme d'autres l'ont souligné, plutôt brillamment, l'utilisation intList.ConvertAll(delegate(int i) { return i.ToString();}); cependant il est clair que vous devez utiliser .ToString() et c'est une conversion plutôt que d'un plâtre.

Vous pouvez utiliser:

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();

Vous avez à construire une nouvelle liste.Le sous-jacent peu de représentations de List<int> et List<string> sont totalement incompatibles -- sur une plate-forme 64 bits, par exemple, les membres individuels ne sont même pas de la même taille.

Il est théoriquement possible de traiter un List<string> en tant que List<object> -- cela vous met dans l'passionnant mondes de la covariance et la contravariance, et n'est pas actuellement pris en charge par le C# ou VB.NET.

result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()

remplacez les paramètres de résultat et listOfInt à vos paramètres

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top