C#中String 與StringBuilder的區別


     首先要明確一點, String是引用類型, String str=null 。 並且要知道String的值是不可變的。為什么String的值不可變?這個地方我在網上查了一下,暫時沒有好的答案,后面找到之后再補充。

String的不可變性舉例來說: String a ="123";   a +="45";     這個時候你可能會以為,a 的值明明變成了"123456".但是實際情況是這樣的。第一次string a ="123";  堆上分配內存,存儲值“123”,這里的 a 只是一個內存地址,指向堆上的"123",

當a+="45" 的時候,堆上又分配了一塊內存,存放“12345”,這時候a 只是變成了指向"12345"地址的一個對象。所以a 的值每次發生變更,實際上是新增了一個值,之前的"“123”並沒有消失。所以在做string拼接字符串的時候,特別是for循環中,使用a+=這種

的語法時,會照成大量的內存損耗。這時候就推薦使用StringBuilder對象了。StringBuilder拼接不會創建新的內存空間。

  StringBuilder是一個可以拼接字符串的類,初始化時可以指定stringBuilder對象一個長度,StringBuilder中有一個int類型的Capacity屬性,用來指定stringBuilder中容器的長度。StringBuilder提供一個Append(string str)方法用於拼接字符串,並且可以自動檢測字符串長度,當長度超過之前指定的最大長度時,會自動增加一個capacity的長度。所以在進行大量字符串拼接時,應該使用StringBuilder對象。

 

 


免責聲明!

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



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