首先,我对使用StringBuilder
类不太困惑:
一个
string
对象串联操作总是从现有的创建一个新的对象string
和新的数据。甲StringBuilder
对象维护一个缓冲器,以适应新的数据的串联。如果有可用空间,则将新数据附加到缓冲区的末尾;否则,将分配一个更大的新缓冲区,将原始缓冲区中的数据复制到新缓冲区中,然后将新数据附加到新缓冲区中。
但是创建StringBuilder
实例以避免创建新实例的目的在String
哪里呢?听起来像“一对一”交易。
static void Main(string[] args)
{
String foo = "123";
using (StringBuilder sb = new StringBuilder(foo)) // also sb isn't disposable, so there will be error
{
sb.Append("456");
foo = sb.ToString();
}
Console.WriteLine(foo);
Console.ReadKey();
}
为什么我不应该只使用
+=
编辑:好的,我现在知道如何重用一个实例StringBuilder
(仍然不知道这对代码标准是否正确),但是仅使用一个实例是不值得的string
,不是吗?