正确的语法是什么:
IList<string> names = "Tom,Scott,Bob".Split(',').ToList<string>().Reverse();
我搞砸了什么? TSource 是什么意思?
最佳答案
问题是您正在调用 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();
这避免了创建任何大小不合适的缓冲区 - 代价是在一个会做的地方使用四个语句......一如既往,在实际用例中权衡可读性和性能。
关于C# 语法——用逗号将字符串拆分为数组,转换为通用列表,并反转顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/315358/