成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

c#中string的特性是什么

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

在上思等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站制作 網(wǎng)站設計制作定制開發(fā),公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設公司,上思網(wǎng)站建設費用合理。

前言

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();
  }

  /// <summary>
  /// 對hello進行加工
  /// </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

當然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)存開銷

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

文章題目:c#中string的特性是什么
URL地址:http://jinyejixie.com/article44/pgiche.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設網(wǎng)頁設計公司、網(wǎng)站內(nèi)鏈、微信公眾號虛擬主機、網(wǎng)站改版

廣告

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

成都網(wǎng)站建設
古蔺县| 呼玛县| 揭西县| 长沙县| 霞浦县| 定安县| 阿坝县| 嘉义县| 元氏县| 车险| 曲靖市| 绵竹市| 涡阳县| 巴彦县| 甘德县| 永定县| 庆阳市| 丰城市| 伊宁县| 鄄城县| 台中市| 奉节县| 藁城市| 云梦县| 耿马| 祁门县| 年辖:市辖区| 新安县| 田阳县| 类乌齐县| 海兴县| 固安县| 张家川| 碌曲县| 沧州市| 阜新| 汤原县| 朔州市| 河北区| 聂荣县| 邵东县|