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