vb.net - 什么时候使用StringBuilder?

标签 vb.net string stringbuilder

Possible Duplicate:
String vs StringBuilder

我刚刚重温了一些我用来学习 VB.NET 的书籍。我不确定我是否已经理解了这一点,了解 StringBuilder 是如何/什么的。

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

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

或者,每当您使用它来将字符串添加在一起时,您是否会看到性能优势?

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

令我印象深刻的是,声明另一个变量并包含 namespace 对于小字符串连接没有好处,但我现在不确定。

抱歉,很多文档告诉您该使用什么,但没有告诉您什么是最好的。

最佳答案

我有一个 article on this very topic 。总结(从页面底部复制):

  • 当您在一个重要的循环中进行连接时,一定要使用 StringBuilder - 特别是如果您不确定(在编译时)将在循环中进行多少次迭代。例如,一次读取文件一个字符,使用 += 运算符构建字符串可能是性能自杀。
  • 当您可以(可读地)指定需要在一个语句中连接的所有内容时,一定要使用连接运算符。 (如果您有一个要连接的数组,请考虑显式调用 String.Concat - 如果需要分隔符,请考虑调用 String.Join。)
  • 不要害怕将文字分成几个串联的位 - 结果将是相同的。例如,您可以通过将长文字分成几行来提高可读性,而不会损害性能。
  • 如果您需要连接的中间结果而不是提供下一次连接迭代,那么 StringBuilder 将无法帮助您。例如,如果您从名字和姓氏建立一个全名,然后在末尾添加第三条信息(也许是昵称),那么只有在不这样做的情况下,您才会从使用 StringBuilder 中受益需要(名字 + 姓氏)字符串用于其他目的(就像我们在创建 Person 对象的示例中所做的那样)。
  • 如果您只需要执行一些串联操作,并且您确实想在单独的语句中执行这些操作,那么采用哪种方式并不重要。哪种方式更有效取决于连接的数量、所涉及的字符串的大小以及连接的顺序。如果您确实认为该代码段是性能瓶颈,请对它进行分析或基准测试。<

关于vb.net - 什么时候使用StringBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/529999/

相关文章:

c++ - 不分配任何 char 内存的 const 字符串构造函数?

java - 有字符串时为什么要使用 StringBuilder?

java - 使用 Scanner 在 Java 控制台应用程序中接受用户的格式化 Json(多行)输入(未读取所有行)

python - 有没有更自动化的方法来发现子字符串?

vb.net 创建和使用命名空间

regex - 如何查找时间值(类似 # :##) in a string

sql - 在 VB.Net 中使用 SQL 连接到 Access 数据库

c - C 中是否有类似于 SQL 中的 LIKE 的函数来比较 2 个字符串?

c# - 如何切片/修剪这个值?

c# to vb.net 如何继承多个类?无法转换它。 SharpDevelop 也失败了