我有一种情况,我需要连接几个字符串,以形成一个类的ID.基本上我只是循环一个列表来获取对象的ToString值,然后连接它们.
foreach (MyObject o in myList)
result += o.ToString();
Run Code Online (Sandbox Code Playgroud)
该列表预计不会有超过5个元素(虽然它可以但这是一个非常非常边缘的情况)并且通常会有1到3个元素,通常只有一个或两个元素.
什么会更多的性能,保持连接或使用StringBuilder?
StringBuilder bld = new StringBuilder()
foreach (MyObject o in myList)
bld.Append(o.ToString());
Run Code Online (Sandbox Code Playgroud)
我不确定在最常见的情况下,创建StringBuilder是否会花费比标准串联更多的时间.
这是懒惰的,列表中的项目一旦创建就不会改变,因此在调用时id会被懒惰地构造一次.
作为旁注...我应该使用固定数组而不是List吗?如果我这样做,我会获得任何性能或内存改进吗?(列表仅用作IEnumerable)
问题的一般观点可能是,有多少字符串足以阻止连接并开始构建?
我是否应该费心去测试这种情况呢?
if (myList.Count > 4)
ConcatWithStringBuilder(myList);
Run Code Online (Sandbox Code Playgroud)