這篇博客,純參考。主要為了自己也復習一遍,過一下其中的原理。
string aTest = "abc";//分配固定的內存大小 aTest += "ddd"; //銷毀原先的數據再來分配,消耗大 StringBuilder sb = new StringBuilder(20);//指定分配大小,指定分配內存大小,性能就會得到提升。 //如果超過指定大小系統,系統會倍增,自動增加的,40,60,80 sb.Append("aaa");//分配到堆區 sb.Append("ddd");//不會被銷毀,直接加到后面
StringBuilder 並不會重新創建一個string對象,如果stringbuilder沒有預先定義長度,默認長度為16,
大於16而小於32,時,會自動重新分配內存為32,即16的倍數。
使用StringBuilder需要預先知道長度,避免浪費空間。
總結:
string聲明之后內存大小是不可以修改的,但是StringBuilder可以自由擴展大小
string 分配到棧區,stringbuilder分配到堆區。
對字符串修改比較頻繁的情況使用StringBuilder。
原文參考 :http://www.cnblogs.com/qq610540622/p/4621405.html