-6

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(移动 m in tmpArr[0]) c += m.Name + " ";

我真正想做的是类似 string.Join(",",tmpArr[0]),但我不希望它连接它们的 ToString 值,只是连接它们的名称,我将如何做到最好?

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

字符串分隔符 = ""; StringBuilder sb = new StringBuilder();

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

2 回答 2

1

多次将块添加到字符串是一个坏主意,因为由于字符串在 .NET 中是不可变的,因此您会在内存中获得大量垃圾字符串,并且可能在执行时间方面复制更昂贵。当您需要编写字符串时,使用StringBuilder,String.Concat()或绝对是最好的方法。String.Join()

于 2013-09-10T13:24:13.800 回答
1

最干净的方法是使用String.Join,因为这就是它的用途:

string.Join(" ", tmpArr[0].Select(x => x.Name));
于 2013-09-10T13:25:04.517 回答