为什么我会使用StringBuilder而不是简单追加字符串?例如,为什么实现像:
StringBuilder sb = new StringBuilder;
sb.Append("A string");
sb.Append("Another string");
在
String first = "A string";
first += "Another string";
答案 0 :(得分:10)
StringBuilder的文档解释了其目的:
String对象是不可变的。一切 你使用其中一种方法的时间 System.String类,你创建一个新的 内存中的字符串对象,其中 需要新的空间分配 那个新对象。在哪些情况下 你需要重复表演 对字符串的修改, 与创建相关的开销 新的String对象可能很昂贵。该 System.Text.StringBuilder类可以 用于修改字符串时使用 没有创建新对象。对于 例如,使用StringBuilder类 可以提高性能 将许多字符串连接在一起 一个循环。
答案 1 :(得分:5)
在像你这样的简单案例中,这无关紧要。但通常,字符串是不可变的,这意味着对字符串变量的每次更改都会在内存中创建一个新缓冲区,复制新数据并放弃旧缓冲区。如果你正在进行大量的字符串操作,这会减慢你的程序并导致很多废弃的字符串缓冲区,需要由垃圾收集器收集。
答案 2 :(得分:0)
基本上是字符串不变性问题。它还提供了更简单的字符串操作方法。看看Using Stringbuilder Class
答案 3 :(得分:0)
StringBuilder是可变的。字符串不是。因此,对字符串的任何操作都会创建一个新对象。在第二个示例中,创建了两个对象(每行一个)。而在第一个中,只创建了一个对象。