Antworten:
.NET 2.0 verfügt über die ConvertAll
Methode, mit der Sie eine Konverterfunktion übergeben können:
List<int> l1 = new List<int>(new int[] { 1, 2, 3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Aktualisiert für 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()
auf dieselbe Art von IL kompiliert ist wie delegate(int x) { return x.ToString(); }
in diesem Fall, ist es wichtig, einen C # -Compiler (C # -Version) zu haben, der weiß, was =>
ist. Das Framework und die Laufzeit (.NET-Version) benötigen hierfür keine besonderen Funktionen, daher ist .NET 2.0 hier in Ordnung.
<string>
und es funktioniert immer noch. Machen Sie es einfachl1.ConvertAll(x => x.ToString());
Kann C # 2.0 das List<T>.Convert
? Wenn ja, denke ich, wäre Ihre beste Vermutung, dies mit einem Delegierten zu verwenden:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Etwas in diese Richtung.
Upvote Glenns Antwort, die wahrscheinlich der richtige Code ist ;-)
Sie können es nicht direkt umwandeln, da keine explizite oder implizite Umwandlung von int in string vorhanden ist. Es müsste sich um eine Methode handeln, die .ToString () umfasst, z. B.: -
foreach (int i in intList) stringList.Add(i.ToString());
Bearbeiten - oder, wie andere ziemlich brillant hervorgehoben haben, verwenden Sie intList.ConvertAll (delegate (int i) {return i.ToString ();}); es ist jedoch klar, dass Sie immer noch .ToString () verwenden müssen und es sich eher um eine Konvertierung als um handelt eine Besetzung.
int
implizit oder explizit in konvertierbar wäre string
, bedeutet dies nicht, dass List<int>
eine implizite oder explizite Konvertierung in erfolgt List<string>
.
Sie müssen eine neue Liste erstellen. Die zugrunde liegenden Bitdarstellungen von List<int>
und List<string>
sind vollständig inkompatibel - auf einer 64-Bit-Plattform beispielsweise sind die einzelnen Mitglieder nicht einmal gleich groß.
Es ist theoretisch möglich, a List<string>
als zu behandeln List<object>
- dies führt Sie in die aufregenden Welten der Kovarianz und Kontravarianz und wird derzeit von C # oder VB.NET nicht unterstützt.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
Ersetzen Sie die Parameter result und listOfInt durch Ihre Parameter