C# 语法——用逗号将字符串拆分为数组,转换为通用列表,并反转顺序

标签 c# generics syntax ilist

正确的语法是什么:

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/

相关文章:

c# - 在 C# 中解码嵌套 JSON 对象

c# - 如何检测 Control + 不是 VirtualKey 键盘组合?

c - 将数组传递给函数时出现语法错误

Scala 方法引用另一个类?

c# - 附加到现有的 Excel 实例

c# - 什么逻辑错误可能导致此处出现运行时错误?

java - 如何在泛型中使用多个上限

c# - 如何链接接受 Func<> 委托(delegate)的方法重载? (C#)

java - 通用 Spring Bean - 复制类型参数

java - JDBC 连接字符串语法和剖析