Проблема заключается в том, что вы вызываете 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();
Это позволяет избежать создания каких-либо буферов несоответствующего размера - за счет принятия четырех заявлений, в которых каждый будет делать ... Как всегда, взвешивать читаемость с эффективностью в реальном прецеденте.
skeet's beast! – flesh 2008-11-24 20:55:02