字符串列表到一个字符串

时间:2008-11-25 20:38:05

标签: c# string performance functional-programming

假设您有:

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);

或Plain old StringBuilder foreach

或者有更好的方法吗?

6 个答案:

答案 0 :(得分:262)

我会选择A:

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

我的理由是因为为此目的编写了Join方法。事实上,如果你看一下Reflector,你会发现使用不安全的代码来真正优化它。另外两个也是WORK,但我认为Join函数是为此目的编写的,我猜,最有效率。我可能错了......

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

String.Join(String.Empty, los);

答案 1 :(得分:49)

string.Concat(los.ToArray());

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

答案 2 :(得分:16)

如果您使用.net 4.0,则可以使用分拣机方式:

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

答案 3 :(得分:8)

String.Join()的实现速度非常快,因为您已经有了相关字符串的集合,可能是最好的选择。最重要的是,它喊道:“我加入了一系列字符串!”总是很好。

答案 4 :(得分:6)

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

答案 5 :(得分:4)

我的投票是string.Join

不需要创建lambda评估和临时函数,更少的函数调用,更少的堆栈推送和弹出。