c#stringbuilder vs Aggregate?

时间:2013-09-10 13:20:56

标签: c# .net

StringBuilder真的比Aggreggate快吗?

    string c = tmpArr[0].Aggregate(string.Empty, (current, m) => current + (m.Name + " "));

    StringBuilder sb = new StringBuilder();

    foreach (Mobile m in tmpArr[0])
        sb.Append(m.Name + " ");

    sb.ToString();

这两个中哪一个更快?聚合肯定是更清洁,但它是快速还是与做

相同
  

foreach(移动设备在tmpArr [0]中)       c + = m.Name +“”;

我真正想做的是像string.Join(“,”,tmpArr [0]),但我不希望它连接他们的ToString值,只是他们的名字,我怎么能做到最好?

我没有使用string.Join的问题是我实际上必须做这样的事情:

  

string separator =“”;           StringBuilder sb = new StringBuilder();

    foreach (Mobile m in tmpArr[0])
    {
        separator = ", ";
        sb.Append(separator + m.Name);
    }

2 个答案:

答案 0 :(得分:1)

多次将块添加到字符串中是一个坏主意,因为因为字符串在.NET中是不可变的,所以在内存中获得了大量的附加字符串,并且可能在执行时间方面也更加昂贵。当您需要撰写字符串时,使用StringBuilderString.Concat()String.Join()绝对是最佳方式。

答案 1 :(得分:1)

最简洁的方法是使用String.Join,因为它就是这样:

string.Join(" ", tmpArr[0].Select(x => x.Name));