美文网首页
解决拼接字符串产生的滞留性-------StringBuilde

解决拼接字符串产生的滞留性-------StringBuilde

作者: 本来想取long但是有人用了 | 来源:发表于2016-12-14 20:20 被阅读0次

学习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 ();

相关文章

网友评论

      本文标题:解决拼接字符串产生的滞留性-------StringBuilde

      本文链接:https://www.haomeiwen.com/subject/cbqwmttx.html