學(xué)習(xí)StringBuilder:目的解決拼接字符串產(chǎn)生的滯留性。
string類有不可改變性烂翰,每次執(zhí)行字符串拼接的時候夯缺,實(shí)際上都會產(chǎn)生一個新的字符串對象
stringbuilder類解決了對字符串重復(fù)修改過程中產(chǎn)生大量對象的問題。
初始化帶有capacity來控制容量大小,并且允許我們修改容量的大小,
如果初始化是默認(rèn)構(gòu)造函數(shù)初始化的sb對象甘耿,那么默認(rèn)capacity大小為16
C#5.0版本capacity成倍的增長
C#4.0版本之下的踊兜,拼接長度超出容量的時候翻1倍,如果沒超過就是默認(rèn)容量大小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);
結(jié)論
容量大小沒有超過64佳恬,實(shí)際容量大小為64
容量>64就是實(shí)際容量大小
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?();