学习StringBuilder:目的解决拼接字符串产生的滞留性。
string类有不可改变性,每次执行字符串拼接的时候,实际上都会产生一个新的字符串对象
stringbuilder类解决了对字符串重复修改过程中产生大量对象的问题。
初始化带有capacity来控制容量大小,并且允许我们修改容量的大小,
如果初始化是默认构造函数初始化的sb对象,那么默认capacity大小为16
C#5.0版本capacity成倍的增长
C#4.0版本之下的,拼接长度超出容量的时候翻1倍,如果没超过就是默认容量大小16
System.Text.StringBuilder sb=new System.Text.StringBuilder();
Console.WriteLine ("没拼接之前sb的容量为:{0}",sb.Capacity);
string a="你好";
string b="中国";
sb.Append (a);
sb.Append (b);
结论
容量大小没有超过64,实际容量大小为64
容量>64就是实际容量大小
Console.WriteLine ("拼接之后sb的容量为:{0}",sb.Capacity);
Console.WriteLine ("拼接之后sb的长度为{0}",sb.Length);
C#5.0下面这种初始化方式,容量大小取决于初始化字符串的长度
C#5.0一下根上面情况相同
string s="你好qweqwe";
System.Text.StringBuilder sb1=new System.Text.StringBuilder(s);
Console.WriteLine (sb1.Capacity);
System.Text.StringBuilder sb3 = new System.Text.StringBuilder("双击,");
字符串拼接
sb3.AppendFormat ("{0}", 666);
Console.WriteLine (sb3);
字符串移除
Console.WriteLine (sb3.Remove (0, 3));
字符串替换
sb1.Replace ("你", "我");
Console.WriteLine (sb1.MaxCapacity);
字符串插入
Console.WriteLine (sb1.Insert(1,"哈哈"));
Console.ReadKey ();