C# String StringBuilder 區別


這篇博客,純參考。主要為了自己也復習一遍,過一下其中的原理。

 

 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM