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(Mobile m in 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);
}
如果您在循环中附加字符串 (c += m.Name + " ";
)您导致创建大量中间字符串;这会导致“伸缩”内存使用,并给 GC 带来额外的负载。聚合,与 StringBuilder 的 Fluent-API 混合可以在这里提供帮助 - 但与 StringBuilder 的循环一样。重要的不是聚合,而是不创建大量中间字符串.
例如,我会使用:
foreach (Mobile m in tmpArr[0])
sb.Append(m.Name).Append(" ");
更少;p
对于在 Aggregate 中使用 StringBuilder 的类似示例:
string c = tmpArr[0].Aggregate(new StringBuilder(),
(current, m) => current.Append(m.Name).Append(" ")).ToString();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)