您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“C#字符串的拼接方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“C#字符串的拼接方法”吧!
直接通過(guò)+拼接是我們?cè)诖a中最常見(jiàn)的一種方式,下面以一個(gè)簡(jiǎn)單的代碼段來(lái)分析分析
1stringstr="1";
2
3str=str+"2";
第一段代碼,首先分配了一個(gè)內(nèi)存空間來(lái)存儲(chǔ)str變量,其值為“1”
第二段代碼,重新分配了一個(gè)新的內(nèi)存空間來(lái)存儲(chǔ)“12”,并將str指向新地址
通過(guò)分析,其實(shí)我們不難發(fā)現(xiàn),兩端就簡(jiǎn)單的代碼,就會(huì)有兩次內(nèi)存地址操作,隨著拼接字符串的個(gè)數(shù)地址,分配內(nèi)存地址的次數(shù)也遞增,當(dāng)幾個(gè)簡(jiǎn)單的字符串通過(guò)該方式拼接時(shí),其實(shí)我們還是感覺(jué)不到性能的影響,但是當(dāng)字符串?dāng)?shù)量大時(shí),你都會(huì)有感覺(jué)了,那樣不僅僅造成內(nèi)存的浪費(fèi),還直接影響性能。
所以在實(shí)際開(kāi)發(fā)工程中,通過(guò)+拼接字符串比較常見(jiàn),但是如果只是見(jiàn)到這種方式也就不那么友好了,既然不友好,那么顯然就會(huì)有比較友好的方式啦,下面我們就分析分析通過(guò)StringBuilder來(lái)實(shí)現(xiàn)字符串的拼接。
StringBuilder其實(shí)內(nèi)部相當(dāng)于是維護(hù)的一個(gè)字符數(shù)組,是一個(gè)可以動(dòng)態(tài)增加自身數(shù)據(jù)長(zhǎng)度,其默認(rèn)長(zhǎng)度為16,當(dāng)存儲(chǔ)的字符串超出其長(zhǎng)度是,會(huì)自動(dòng)擴(kuò)容2倍長(zhǎng)度。
哈哈,說(shuō)到這兒,估計(jì)你看出了問(wèn)題,那就是超出長(zhǎng)度自動(dòng)擴(kuò)容,自動(dòng)擴(kuò)容是不是也需要犧牲性能,當(dāng)然在幾次擴(kuò)容你還感覺(jué)不到性能的影響,但是如果詞數(shù)多了,你就會(huì)感覺(jué)很明顯,這也是對(duì)StringBuilder的一些使用技巧。
我們?nèi)タ床煌』锇榈拇a,你就會(huì)發(fā)現(xiàn),技術(shù)老鳥(niǎo),在初始化StringBuilder的時(shí)候會(huì)根據(jù)預(yù)估將要存儲(chǔ)的字符串大小,給StringBuilder初始化一個(gè)長(zhǎng)度,這也就是細(xì)節(jié)上的差距體現(xiàn)。
說(shuō)了半天的廢話(huà),是不是要來(lái)的實(shí)際的代碼來(lái)證明說(shuō)的不是廢話(huà)呢?不急不急,在文章最后,我會(huì)專(zhuān)門(mén)寫(xiě)測(cè)試代碼對(duì)比分析的。
對(duì)于一些格式的數(shù)據(jù)拼接填充,string.Format也是經(jīng)??匆?jiàn)的,他的一個(gè)很大好處就是,看上去比較清晰
其實(shí)我們看過(guò)string的底層實(shí)現(xiàn)我們會(huì)發(fā)現(xiàn),其底層本質(zhì)還是StringBuilder來(lái)實(shí)現(xiàn)的
C#6.0出現(xiàn)了$方式拼接字符串,其實(shí)簡(jiǎn)單說(shuō)就是string.Format簡(jiǎn)化操作版,string.Format如果拼接的字符串太多,估計(jì)自己都懵逼的分不清對(duì)應(yīng)關(guān)系了,不知道你們遇到過(guò)沒(méi)有,反正我原來(lái)是遇到過(guò)的。$就很好的規(guī)避了該問(wèn)題
到此,相信大家對(duì)“C#字符串的拼接方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。