假设你有一个:

List<string> los = new List<string>();

在我们现在生活的这个疯狂的函数世界里,哪一个最适合通过连接这些来创建一个字符串:

String.Join(String.Empty, los.ToArray());

StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));

string disp = los.Aggregate<string>((a, b) => a + b);

或普通的旧StringBuilder foreach

还是有更好的办法?


我会选择A:

String.Join(String.Empty, los.ToArray());

我的理由是Join方法就是为此目的而编写的。事实上,如果你看看Reflector,你会发现不安全的代码被用来真正优化它。其他两个函数也可以工作,但我认为Join函数就是为此目的而编写的,而且我猜它是最有效的。不过我也可能错了……

根据@Nuri YILMAZ没有.ToArray(),但这是。net 4+:

String.Join(String.Empty, los);

我的投票是字符串。加入

不需要创建lambda计算和临时函数,更少的函数调用,更少的堆栈推入和弹出。


String.Join()的实现非常快,而且由于您已经有了相关字符串的集合,因此可能是最佳选择。最重要的是,它大喊“我正在加入一个字符串列表!”总是不错的。


string.Concat(los.ToArray());

如果你只是想连接字符串,那么使用string.Concat()而不是string.Join()。


如果你使用。net 4.0,你可以使用一种排序方式:

String.Join<string>(String.Empty, los);

los.Aggregate((current, next) => current + "," + next);