Was ist die richtige Syntax dafür:
IList<string> names = "Tom,Scott,Bob".Split(',').ToList<string>().Reverse();
Was vermassle ich? Was bedeutet TSource?
Das Problem ist, dass Sie anrufen, List<T>.Reverse()
was zurückkehrt void
.
Sie könnten entweder tun:
List<string> names = "Tom,Scott,Bob".Split(',').ToList<string>();
names.Reverse();
oder:
IList<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>();
Letzteres ist teurer, da das Umkehren eines beliebigen IEnumerable<T>
Objekts das Puffern aller Daten und das anschließende Ausgeben aller Daten umfasst - während List<T>
das Umkehren "an Ort und Stelle" erfolgen kann. (Der Unterschied besteht darin, dass die Enumerable.Reverse<T>()
Erweiterungsmethode anstelle der List<T>.Reverse()
Instanzmethode aufgerufen wird.)
Noch effizienter könnten Sie verwenden:
string[] namesArray = "Tom,Scott,Bob".Split(',');
List<string> namesList = new List<string>(namesArray.Length);
namesList.AddRange(namesArray);
namesList.Reverse();
Auf diese Weise wird vermieden, dass Puffer mit einer unangemessenen Größe erstellt werden - auf Kosten von vier Anweisungen, bei denen eine ausgeführt wird ... Wie immer sollten Sie die Lesbarkeit im tatsächlichen Anwendungsfall gegen die Leistung abwägen.
Mir ist klar, dass diese Frage ziemlich alt ist, aber ich hatte ein ähnliches Problem, außer dass in meiner Zeichenfolge Leerzeichen enthalten waren. Für diejenigen, die wissen müssen, wie man eine Zeichenfolge mit mehr als nur Kommas trennt:
Die StringSplitOptions entfernen die Datensätze, die nur ein Leerzeichen ...
quelle
Dieser funktioniert.
quelle
Versuche dies:
quelle
Was Sie hier vermissen, ist, dass .Reverse () eine ungültige Methode ist. Es ist nicht möglich, das Ergebnis von .Reverse () einer Variablen zuzuweisen. Sie können jedoch die Reihenfolge ändern, um Enumerable.Reverse () zu verwenden und Ihr Ergebnis zu erhalten
Der Unterschied besteht darin, dass Enumerable.Reverse () eine IEnumerable <T> zurückgibt, anstatt eine ungültige Rückgabe zu sein
quelle
Wenn du es versuchst
Folgendes sollte funktionieren:
Ausgabe
Jetzt können Sie natürlich die Reihenfolge umkehren, wie andere vorgeschlagen haben.
quelle