Domanda

Puoi lanciare a List<int> A List<string> in qualche modo?

So che potrei scorrere e .ToString() la cosa, ma un cast sarebbe fantastico.

Sono in C# 2.0 (quindi no LINQ).

È stato utile?

Soluzione

.NET 2.0 ha il ConvertAll metodo in cui è possibile passare una funzione di conversione:

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

Altri suggerimenti

Aggiornato per il 2010

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

C# 2.0 è in grado di farlo List<T>.Convert?Se è così, penso che la soluzione migliore sarebbe quella di usarlo con un delegato:

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

Qualcosa del genere.


Vota la risposta di Glenn, che probabilmente è il codice corretto ;-)

Non saresti in grado di lanciarlo direttamente poiché non esiste alcun cast esplicito o implicito da int a string, lo farebbe Avere essere un metodo che coinvolge .ToString() come: -

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

Modificare - o come altri hanno sottolineato in modo piuttosto brillante, usa intList.ConvertAll(delegate(int i) { return i.ToString();});, tuttavia chiaramente devi ancora utilizzare .ToString() ed è una conversione anziché un cast.

Puoi usare:

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

Devi costruire una nuova lista.Le rappresentazioni dei bit sottostanti di List<int> E List<string> sono completamente incompatibili: su una piattaforma a 64 bit, ad esempio, i singoli membri non hanno nemmeno le stesse dimensioni.

Teoricamente è possibile trattare a List<string> come un List<object> - questo ti porta negli entusiasmanti mondi della covarianza e della controvarianza e non è attualmente supportato da C# o VB.NET.

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

sostituisci i parametri result e listOfInt con i tuoi parametri

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top