从数据表之类的东西连接字符串时,最快/最少的资源成本计算是什么?例如:
for (int i = 0; i < darray.Length; i++)
{
str_orderbycity += darray[i]["Sort_Order"].ToString() + ",";
if (i < (darray.Length - 1))
{
str_orderbycity += ",";
}
}
或等到结束然后在字符串上运行remove方法:
str_orderbycity = str_orderbycity.Remove(str_orderbycity.Length - 1, 1);
我只是好奇......
由于
答案 0 :(得分:1)
肯定是StringBuilder
个对象?
e.g。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < darray.Length; i++)
{
sb.Append(darray[i]["Sort_Order"].ToString());
sb.Append(",");
}
if (darray.Length > 0)
sb.Remove(sb.Length - 1, 1);
唯一的功能是构建字符串。见StringBuilder
而且,我相信,最好在循环后测试一次,然后删除。
答案 1 :(得分:0)
使用连接时
str_orderbycity += ",";
创建一个新字符串(如果string intern pool中尚未存在)。
StringBuffer仅使用维护char array
来避免使用这些中间字符串。
StringBuffer
有其成本/开销,因此并不总是比String
连接更有效。
来自String Builder Performance consideration - MSDN
String或StringBuilder对象的串联操作的性能取决于内存分配的频率 字符串连接操作始终分配内存,而StringBuilder连接操作仅在StringBuilder对象缓冲区太小而无法容纳新数据时才分配内存。 如果要连接固定数量的String对象,请使用String类。在这种情况下,编译器甚至可以将单个级联操作组合到单个操作中 如果要连接任意数量的字符串,请使用StringBuilder对象;例如,如果您使用循环来连接随机数量的用户输入字符串。
答案 2 :(得分:0)
使用string.Join:
string myStr = string.Join(“,”,myArray.Select(n =&gt; n.ToString())。ToArray())
搜索将数组转换为csv以获取更多信息。