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); }
答案 0 :(得分:1)
多次将块添加到字符串中是一个坏主意,因为因为字符串在.NET中是不可变的,所以在内存中获得了大量的附加字符串,并且可能在执行时间方面也更加昂贵。当您需要撰写字符串时,使用StringBuilder
,String.Concat()
或String.Join()
绝对是最佳方式。
答案 1 :(得分:1)
最简洁的方法是使用String.Join
,因为它就是这样:
string.Join(" ", tmpArr[0].Select(x => x.Name));