String对象初始化后值不可改变,StringBuilder对象初始化后能够改变。
打个比方
- string a = "a";
- a += "a";
- StringBuilder b = new StringBuilder("a", 2);
- b.Append("a");
- Console.WriteLine("a={0},b={1}", a, b);
- Console.ReadKey();
复制代码
他们两个输出的内容是一样的,但是过程却不一样,a先在内存中开辟了一个内存空间,大小为1,内容为"a"然后连接字符串"a"开辟一个新的内存空间,大小为2,内容为“aa”,然后把地址保存在a。b也开辟了一个内存空间大小为2,内容"a",然后在原空间加上"a",b只开辟了一个内存空间。 |