新聞中心
本篇內(nèi)容主要講解“C#字符串的拼接方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“C#字符串的拼接方法”吧!
其一、直接通過+拼接
直接通過+拼接是我們在代碼中最常見的一種方式,下面以一個簡單的代碼段來分析分析
1stringstr="1";
2
3str=str+"2";
第一段代碼,首先分配了一個內(nèi)存空間來存儲str變量,其值為“1”
第二段代碼,重新分配了一個新的內(nèi)存空間來存儲“12”,并將str指向新地址
通過分析,其實我們不難發(fā)現(xiàn),兩端就簡單的代碼,就會有兩次內(nèi)存地址操作,隨著拼接字符串的個數(shù)地址,分配內(nèi)存地址的次數(shù)也遞增,當(dāng)幾個簡單的字符串通過該方式拼接時,其實我們還是感覺不到性能的影響,但是當(dāng)字符串?dāng)?shù)量大時,你都會有感覺了,那樣不僅僅造成內(nèi)存的浪費,還直接影響性能。
所以在實際開發(fā)工程中,通過+拼接字符串比較常見,但是如果只是見到這種方式也就不那么友好了,既然不友好,那么顯然就會有比較友好的方式啦,下面我們就分析分析通過StringBuilder來實現(xiàn)字符串的拼接。
其二、通過StringBuilder拼接字符串
StringBuilder其實內(nèi)部相當(dāng)于是維護的一個字符數(shù)組,是一個可以動態(tài)增加自身數(shù)據(jù)長度,其默認長度為16,當(dāng)存儲的字符串超出其長度是,會自動擴容2倍長度。
哈哈,說到這兒,估計你看出了問題,那就是超出長度自動擴容,自動擴容是不是也需要犧牲性能,當(dāng)然在幾次擴容你還感覺不到性能的影響,但是如果詞數(shù)多了,你就會感覺很明顯,這也是對StringBuilder的一些使用技巧。
我們?nèi)タ床煌』锇榈拇a,你就會發(fā)現(xiàn),技術(shù)老鳥,在初始化StringBuilder的時候會根據(jù)預(yù)估將要存儲的字符串大小,給StringBuilder初始化一個長度,這也就是細節(jié)上的差距體現(xiàn)。
說了半天的廢話,是不是要來的實際的代碼來證明說的不是廢話呢?不急不急,在文章最后,我會專門寫測試代碼對比分析的。
其三、string.Format不陌生吧
對于一些格式的數(shù)據(jù)拼接填充,string.Format也是經(jīng)??匆姷?,他的一個很大好處就是,看上去比較清晰
其實我們看過string的底層實現(xiàn)我們會發(fā)現(xiàn),其底層本質(zhì)還是StringBuilder來實現(xiàn)的
其四、$方式拼接字符串
C#6.0出現(xiàn)了$方式拼接字符串,其實簡單說就是string.Format簡化操作版,string.Format如果拼接的字符串太多,估計自己都懵逼的分不清對應(yīng)關(guān)系了,不知道你們遇到過沒有,反正我原來是遇到過的。$就很好的規(guī)避了該問題
到此,相信大家對“C#字符串的拼接方法”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
標(biāo)題名稱:C#字符串的拼接方法-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://fisionsoft.com.cn/article/dgshdj.html