Проблема в том, что вы звоните List<T>.Reverse()
, который возвращает void
.
Вы можете сделать:
List<string> names = "Tom,Scott,Bob".Split(',').ToList<string>();
names.Reverse();
или
IList<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>();
Последний является более дорогим, так как обращение произвольного IEnumerable<T>
включает в себя буферизацию всех данных и затем их получение - тогда как List<T>
может сделать все обращение "на месте". (Разница здесь в том, что он вызывает метод расширения Enumerable.Reverse<T>()
вместо метода экземпляра List<T>.Reverse()
.)
Еще эффективнее, вы можете использовать:
string[] namesArray = "Tom,Scott,Bob".Split(',');
List<string> namesList = new List<string>(namesArray.Length);
namesList.AddRange(namesArray);
namesList.Reverse();
Это позволяет избежать создания каких-либо буферов неподходящего размера - за счет принятия четырех операторов, из которых один будет делать ... Как всегда, взвесьте удобочитаемость и производительность в реальном случае использования.