C#中Builder和Buffer類的使用方法

這篇文章將為大家詳細(xì)講解有關(guān)C#中Builder和Buffer類的使用方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

為劍川等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及劍川網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、劍川網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

    String類

在我們平時(shí)的使用當(dāng)中很容易不注意到的是,自己寫的代碼很容易發(fā)生了裝箱的操作(把值類型轉(zhuǎn)換為引用類型)。就比如很常見的,一個(gè)字符串拼接

string str=9+"test"; 通過查看IL代碼可以知道這里發(fā)生了裝箱的操作。所以建議使用(在把值類型轉(zhuǎn)換為字符串的時(shí)候,記得用ToString方法)。所以平時(shí)寫代碼的時(shí)候,要注意下,裝箱和拆箱的操作(之后推出的泛型集合不就是為了解決裝箱和拆箱的操作)。裝箱操作的過程:把值類型放到托管堆里面分配內(nèi)存,除了值類型本身所分配的內(nèi)存外,內(nèi)存總量還要加上類型對象指針和同步索引塊所占用的內(nèi)存,之后再將值類型的值重新分配到堆內(nèi)存當(dāng)中,最后再返回引用類型的對象的地址。

我們知道很多類型(值類型)都自帶了一個(gè)ToString方法,為毛用這個(gè)就不會(huì)發(fā)生裝箱操作呢,很簡單的一個(gè)道理,不是有人和你說String是特殊的值類型(雖然他是引用類型),C#語言的設(shè)計(jì)者,為了做到這一點(diǎn),他想出了這個(gè)方法

把String對象,一旦賦值就不可改變(叫做字符串的恒定性),賦值完了之后,再對String進(jìn)行拼接,賦值等,都會(huì)再內(nèi)存里面重新分配一個(gè)新的內(nèi)存空間。

 StringBuilder

基于上面的問題,string類在重新賦值會(huì)重新去分配內(nèi)存空間,所以為了解決這個(gè)問題,微軟推出了一個(gè)StringBuilder的類??梢钥纯碨tringBuilder類是如何做到不重新分配內(nèi)存的呢。

通過閱讀StringBuiler類的實(shí)現(xiàn),我們可以發(fā)現(xiàn)

  internal const int DefaultCapacity = 0x10; StringBuilder類,默認(rèn)的大小是16,意思就是說我們?nèi)绻恢付⊿tringBuilder長度,超過16個(gè)長度,就會(huì)重新去分配一次內(nèi)存。具體實(shí)現(xiàn)可以看看StringBuilder類的Append源碼。

C#中Builder和Buffer類的使用方法

從代碼里面可以看出,我們平時(shí)用StringBuilder的時(shí)候,一定要指定合適的長度。源碼里面的fixed語句塊(通俗的來講,可以禁止垃圾回收把變量地址給回收了)。  

關(guān)于C#中Builder和Buffer類的使用方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站名稱:C#中Builder和Buffer類的使用方法
文章地址:http://www.muchs.cn/article40/ghjgeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、小程序開發(fā)、微信公眾號(hào)、網(wǎng)站制作、Google品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)