连接字符串最有效的方法是什么?
当前回答
字符串连接有6种类型:
使用加号。 使用string.Concat()。 使用string.Join()。 使用string.Format()。 使用string.Append()。 使用StringBuilder。
在一个实验中,已经证明string.Concat()是最好的方法,如果单词少于1000(大约),如果单词超过1000,那么应该使用StringBuilder。
欲了解更多信息,请访问该网站。
string.Join() vs string.Concat() 的字符串。Concat方法在这里等价于字符串。用空分隔符连接方法调用。追加一个空字符串很快,但不这样做更快,所以字符串。Concat法在这里更优越。
其他回答
下面可能是连接多个字符串的另一种解决方案。
String str1 = "sometext";
string str2 = "some other text";
string afterConcate = $"{str1}{str2}";
字符串插值
摘自这篇MSDN文章:
有一些开销与 创建一个StringBuilder对象,两者都有 在时间和记忆中。在一台机器上 快速内存,StringBuilder变成 如果你要做5次,那就值得了 操作。根据经验,我 10个或更多的字符串操作 开销是否合理 任何机器,即使是较慢的机器。
因此,如果你信任MSDN,如果你必须做超过10个字符串操作/连接,那么就使用StringBuilder -否则简单的字符串连接'+'就可以了。
. net性能专家Rico Mariani有一篇关于这个主题的文章。这并不像人们想象的那么简单。基本的建议是:
如果你的图案是这样的: X = f1(…)+ f2(…)+ f3(…)+ f4(…) 这是一个concat,它是活泼的,StringBuilder可能不会有帮助。 如果你的图案是这样的: 如果(…)x += f1(…) 如果(…)x += f2(…) 如果(…)x += f3(…) 如果(…)x += f4(…) 那么你可能需要StringBuilder。
另一篇支持这一说法的文章来自Eric Lippert,他详细描述了在一行+连接上执行的优化。
如果你在循环中操作,StringBuilder可能是最好的选择;它节省了定期创建新字符串的开销。在只运行一次的代码中,字符串。Concat可能没问题。
然而,Rico Mariani(。NET优化大师)做了一个测试,他在测试的最后说,在大多数情况下,他建议使用String.Format。
最有效的方法是使用StringBuilder,如下所示:
StringBuilder sb = new StringBuilder();
sb.Append("string1");
sb.Append("string2");
...etc...
String strResult = sb.ToString();
@jonezy:字符串。Concat是好的,如果你有一些小东西。但是,如果您正在连接兆字节的数据,那么您的程序可能会崩溃。