這篇文章主要介紹“c#中string的特性介紹”,在日常操作中,相信很多人在c#中string的特性介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”c#中string的特性介紹”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)2013年至今,先為吉州等服務(wù)建站,吉州等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為吉州企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
前言
string類型在我們實際項目開發(fā)中是一個最使用的類型,string是一個引用類型這一點大家都知道,但是在實際使用過程中,大家會發(fā)現(xiàn)string和我們常見的引用類型使用還真不一樣,看下面的一個簡單例子:
static void Main(string[] args) { string hello = "my name is yuanHong"; Console.WriteLine(string.Format("加工前的值:{0}", hello)); ///// 對hello進行加工 MachHello(hello); Console.WriteLine(string.Format("加工后的值:{0}", hello)); Console.ReadLine(); } ///
程序運行的實際結(jié)果是:前后值都一樣沒有發(fā)生改變,如果按照引用類型看分析,也該是加工前后期值是不一樣的,那是為什么呢?是不是有一種感覺字符串又像是值類型呢?好下面我們就一起探討一下string的特殊性所在。
string內(nèi)部實現(xiàn)簡介
首先:是要說明的是string是被sealed修飾,不能繼承。
其次:通過上面的string底層源碼,我們發(fā)現(xiàn),在底層實現(xiàn)上實際上是用的char數(shù)組來實現(xiàn),在初始化一個字符串時,系統(tǒng)都已經(jīng)初始化了char數(shù)組的大小。
string在創(chuàng)建時都固定化了大小,并且是只讀,不能修改
在實際使用過程中,我們對string的改變,實際上在內(nèi)部是重新創(chuàng)建了一個新的字符串
字符串在作為函數(shù)參數(shù)傳遞時,實際上是拷貝了一份數(shù)據(jù)傳遞
最后:現(xiàn)在我們在回頭看最開的程序結(jié)果我們就不難明白其為什么會出現(xiàn)這樣的現(xiàn)象了
string使用注意點
1、避免額外的存儲空間開銷
避免用+號來拼接字符串:
看下面的一個實例:
string str1 = "yuan";str1 = str1 + "hong";//// 這樣會創(chuàng)建兩個字符串3個字符串對象string strNew = "yuan" + "hong";/// 等效于 strNew="yuanhong",其實在編譯后也就是這個效果//// 只會創(chuàng)建一個字符串對象
再看一個實例:
//// 下面是兩種方式實現(xiàn)返回一個字符串123//// 方式1 string v11="1";string v22=v11+"2";string v33=v22+"3";retun v33;//// 采用方式1:系統(tǒng)會創(chuàng)建5個string對象//// 方式2//// 采用方式2:系統(tǒng)只會創(chuàng)建4個string對象string v1="1";string v2="2";string v3="3";retun v1+v2+v3;//// 從內(nèi)存開銷誰行來說,明顯方式2要優(yōu)于方式1
在實際開發(fā)中,如果對字符串對象頻繁的拼接操作,建議使用StringBuilder
當(dāng)然c#中也有一只簡化字符串拼接方式:String.Format ,其實其內(nèi)部實現(xiàn)原理也就是 StringBuilder
2、盡量少的裝箱
直接上代碼實例:
string str1 = "yunghong" + 66;string str2 = "yunghong" + 66.ToString();//// 查看編譯后的代碼,發(fā)現(xiàn)第一行代碼,需要有一個裝箱操作,裝箱操作,需要增加不必要的內(nèi)存開銷,第一:需要給值類型本身分布內(nèi)存,同時還要給類型指針和同板塊索引分配內(nèi)存開銷
總結(jié):
在實際開發(fā)中需要注意一下幾點:
1、避免裝箱操作
2、避免使用+號拼接字符串
到此,關(guān)于“c#中string的特性介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
文章標題:c#中string的特性介紹
標題路徑:http://weahome.cn/article/pocdho.html