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/