Risposte:
.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(); });
Aggiornato per il 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()
è compilata con lo stesso tipo di IL delegate(int x) { return x.ToString(); }
di questo caso, la cosa importante è avere un compilatore C # (versione C #) che sappia cos'è =>
. Il framework e il runtime (versione .NET) non hanno bisogno di funzionalità speciali per questo, quindi .NET 2.0 va bene qui.
<string>
e funziona ancora. Rendendolo solol1.ConvertAll(x => x.ToString());
C # 2.0 è in grado di fare List<T>.Convert
? Se è così, penso che la tua ipotesi migliore sarebbe usarla 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.
Dai un voto positivo alla risposta di Glenn, che è probabilmente il codice corretto ;-)
Non sarebbe in grado di lanciare direttamente come non esiste un cast esplicito o implicito da int a string, sarebbe hanno di essere un metodo che coinvolge .ToString () come ad esempio: -
foreach (int i in intList) stringList.Add(i.ToString());
Modifica - o come altri hanno sottolineato in modo piuttosto brillante, usa intList.ConvertAll (delegate (int i) {return i.ToString ();});, tuttavia chiaramente devi ancora usare .ToString () ed è una conversione piuttosto che un cast.
int
fosse implicitamente o esplicitamente convertibile in string
, ciò non significa che List<int>
abbia una conversione implicita o esplicita in List<string>
.
Devi costruire una nuova lista. Le rappresentazioni di bit sottostanti 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 a 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()
sostituire i parametri result e listOfInt con i propri parametri