什么时候使用StringBuilder?

spa*_*eys 16 vb.net string stringbuilder

可能重复:
String vs StringBuilder

我刚刚重温了一些我曾经拿过VB.NET的书.我不确定我是否已经掌握了这一点,了解StringBuilder是如何/是什么.

使用指南是什么?如果要连接2个字符串或50个字符串,最好使用它吗?

或者当总字符串长度大于128个字符时?

或者,只要您使用它来将字符串添加到一起,您会看到性能优势吗?

在哪种情况下,最好使用StringBuilder实例来构建SQL语句string.format("Select * from x where y = {0}",1)

总是让我感到震惊的是,声明另一个变量并包含名称空间对小字符串连接不利,但我现在不确定.

对不起,很多文档告诉你要使用什么,而不是什么是最好的.

Jon*_*eet 36

我有一篇关于这个话题文章.总结(从页面底部复制):

  • 当您在一个非平凡的循环中连接时,肯定会使用StringBuilder - 特别是如果您不确定(在编译时)您将通过循环进行多少次迭代.例如,一次读取一个文件,使用+ =运算符构建一个字符串可能会导致性能自杀.
  • 当你可以(可读地)指定需要在一个语句中连接的所有内容时,绝对使用连接运算符.(如果要连接的数组,请考虑显式调用String.Concat - 如果需要分隔符,请考虑String.Join.)
  • 不要害怕将文字分成几个连接位 - 结果将是相同的.例如,您可以通过将长文字分成几行来提高可读性,而不会损害性能.
  • 如果您需要连接的中间结果,而不是提供下一次连接迭代,StringBuilder不会帮助您.例如,如果你从名字和姓氏建立一个全名,然后在最后添加第三条信息(昵称,也许),你只会受益于使用StringBuilder,如果你不这样做需要(名字+姓氏)字符串用于其他目的(正如我们在创建Person对象的示例中所做的那样).
  • 如果你只是有几个串连的事,和你真正想要做他们单独的语句,它并没有真正不管你走哪条路.哪种方法更有效,将取决于级联串的大小参与的数量,和他们连接在一起的顺序.如果你真的相信这段代码是一个性能瓶颈,配置文件或基准两者兼得.


And*_*are 13

这是我的经验法则:

StringBuilder 最好在编译时未知连接的确切数时使用.