国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中String StringBuilder StringBuffer類的用法

2019-10-29 21:11:07
字體:
來源:轉載
供稿:網友

String和StringBuilder和StringBuffer,這三個都是值得深究一翻的,可能很多人會說,實在不行的話,都全部用StringBuilder,啥事沒有,我不能說你的想法事不正確的,但是我可以給出更好的建議。下面簡單介紹一下這三個類。

     String類

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

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

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

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

  StringBuilder

  基于上面的問題,string類在重新賦值會重新去分配內存空間,所以為了解決這個問題,微軟推出了一個StringBuilder的類。可以看看StringBuilder類是如何做到不重新分配內存的呢。

  通過閱讀StringBuiler類的實現,我們可以發現

   internal const int DefaultCapacity = 0x10; StringBuilder類,默認的大小是16,意思就是說我們如果不指定StringBuilder長度,超過16個長度,就會重新去分配一次內存。具體實現可以看看StringBuilder類的Append源碼。

c#,string,stringbuilder,stringbuffer

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

     總結:平時寫代碼的時候應該要注意裝箱拆箱操作,注意stringBuilder的使用。

以上所述是小編給大家介紹的C#中String StringBuilder StringBuffer,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 土默特左旗| 乐安县| 遂平县| 阜阳市| 郸城县| 平江县| 黔江区| 丹东市| 潜山县| 高邑县| 大安市| 林西县| 四子王旗| 辽宁省| 秭归县| 弋阳县| 卢氏县| 江西省| 盘山县| 全州县| 化德县| 安顺市| 仙居县| 大厂| 公主岭市| 墨脱县| 辽宁省| 吉安市| 得荣县| 红桥区| 石家庄市| 宜阳县| 都匀市| 正安县| 化州市| 阳春市| 乐亭县| 永丰县| 沽源县| 广宗县| 策勒县|