string與stringbuilder兩者的區(qū)別
String 對象是不可改變的。每次使用 System.String 類中的方法之一時,都要在內(nèi)存中創(chuàng)建一個新的字符串對象,這就需要為該新對象分配新的空間。
StringBuilder 對象是動態(tài)對象,允許擴(kuò)充它所封裝的字符串中字符的數(shù)量,但是您可以為它可容納的最大字符數(shù)指定一個值,當(dāng)修改 StringBuilder 時,在達(dá)到容量之前,它不會為其自己重新分配空間。當(dāng)達(dá)到容量時,將自動分配新的空間且容量翻倍??梢允褂弥剌d的構(gòu)造函數(shù)之一來指定 StringBuilder 類的容量。
例如: StringBuilder hr = new StringBuilder(); hr.Append("a")
他不會頻繁申請內(nèi)存空間,他會自動向后擴(kuò)展。
兩者的區(qū)別:
1. string 對象時恒定不變的,stringBuider對象表示的字符串是可變的。stringBuilder是.net提供的動態(tài)創(chuàng)建string的高效方式,以克服string對象恒定性帶來的性能影響。
2. 對于簡單的字符串連接操作,在性能上stringBuilder并不一定總是優(yōu)于string。因為stringBuider對象創(chuàng)建代價較大,在字符串目標(biāo)連接較少的情況下,過度濫用stringBuilder會導(dǎo)致性能的浪費,只有大量的或者無法預(yù)知次數(shù)的字符串操作,才考慮stringBuilder來實現(xiàn)。事實上,一般連接次數(shù)設(shè)置100次以內(nèi),根本看不出兩者的性能差別。
3. 當(dāng)修改字符串信息時,此時不許創(chuàng)建對象,可以使用stringBuilder對象。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- 詳解.NET中string與StringBuilder在字符串拼接功能上的比較
- C#使用String和StringBuilder運行速度測試及各自常用方法簡介
- C#中String和StringBuilder的簡介與區(qū)別
- JDK源碼分析之String、StringBuilder和StringBuffer
- 從源碼角度簡單看StringBuilder和StringBuffer的異同(全面解析)
- 詳細(xì)解讀AbstractStringBuilder類源碼
- Android中的SpannableString與SpannableStringBuilder詳解
- java 中String和StringBuffer與StringBuilder的區(qū)別及使用方法
- java StringBuilder類的詳解及簡單實例
- C#中String StringBuilder StringBuffer類的用法
相關(guān)文章
關(guān)于C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.
本篇文章,小編為大家介紹關(guān)于C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.NET4中的使用介紹方法,有需要的朋友可以參考一下2013-04-04C#實現(xiàn)JSON解析器MojoUnityJson功能(簡單且高效)
MojoUnityJson 是使用C#實現(xiàn)的JSON解析器 ,算法思路來自于游戲引擎Mojoc的C語言實現(xiàn) Json.h。這篇文章主要介紹了C#實現(xiàn)JSON解析器MojoUnityJson的方法,需要的朋友可以參考下2018-01-01c#將字節(jié)數(shù)組轉(zhuǎn)成易讀的字符串的實現(xiàn)
這篇文章主要介紹了c#將字節(jié)數(shù)組轉(zhuǎn)成易讀的字符串的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01