c#中string的特性是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹了c#中string的特性是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)專注于埇橋區(qū)企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,成都做商城網(wǎng)站。埇橋區(qū)網(wǎng)站建設(shè)公司,為埇橋區(qū)等地區(qū)提供建站服務(wù)。全流程按需策劃設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(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進(jìn)行加工
   MachHello(hello);

   Console.WriteLine(string.Format("加工后的值:{0}", hello));

   Console.ReadLine();
  }

  /// <summary>
  /// 對hello進(jìn)行加工
  /// </summary>
  /// <param name="hello"></param>
  private static void MachHello(string hello)
  {
   hello = string.Format("{0},Nice to meet you",hello);
  }

程序運行的實際結(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)存開銷

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“c#中string的特性是什么”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章題目:c#中string的特性是什么-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://muchs.cn/article14/dheige.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站維護(hù)、搜索引擎優(yōu)化、營銷型網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、網(wǎng)站建設(shè)

廣告

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

成都定制網(wǎng)站建設(shè)