Answers:
问题是您正在呼叫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();
这样可以避免创建任何大小不适当的缓冲区-付出的代价是采用四个将要执行的语句...像往常一样,在实际用例中权衡可读性和性能。