bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

c#中string的特性介紹

這篇文章主要介紹“c#中string的特性介紹”,在日常操作中,相信很多人在c#中string的特性介紹問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”c#中string的特性介紹”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)2013年至今,先為吉州等服務(wù)建站,吉州等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為吉州企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

前言

string類型在我們實(shí)際項(xiàng)目開(kāi)發(fā)中是一個(gè)最使用的類型,string是一個(gè)引用類型這一點(diǎn)大家都知道,但是在實(shí)際使用過(guò)程中,大家會(huì)發(fā)現(xiàn)string和我們常見(jiàn)的引用類型使用還真不一樣,看下面的一個(gè)簡(jiǎn)單例子:

static void Main(string[] args)  {   string hello = "my name is yuanHong";   Console.WriteLine(string.Format("加工前的值:{0}", hello));   ///// 對(duì)hello進(jìn)行加工   MachHello(hello);   Console.WriteLine(string.Format("加工后的值:{0}", hello));   Console.ReadLine();  }  /// <summary>  /// 對(duì)hello進(jìn)行加工  /// </summary>  /// <param name="hello"></param>  private static void MachHello(string hello)  {   hello = string.Format("{0},Nice to meet you",hello);  }

程序運(yùn)行的實(shí)際結(jié)果是:前后值都一樣沒(méi)有發(fā)生改變,如果按照引用類型看分析,也該是加工前后期值是不一樣的,那是為什么呢?是不是有一種感覺(jué)字符串又像是值類型呢?好下面我們就一起探討一下string的特殊性所在。

string內(nèi)部實(shí)現(xiàn)簡(jiǎn)介

首先:是要說(shuō)明的是string是被sealed修飾,不能繼承。

其次:通過(guò)上面的string底層源碼,我們發(fā)現(xiàn),在底層實(shí)現(xiàn)上實(shí)際上是用的char數(shù)組來(lái)實(shí)現(xiàn),在初始化一個(gè)字符串時(shí),系統(tǒng)都已經(jīng)初始化了char數(shù)組的大小。

string在創(chuàng)建時(shí)都固定化了大小,并且是只讀,不能修改

在實(shí)際使用過(guò)程中,我們對(duì)string的改變,實(shí)際上在內(nèi)部是重新創(chuàng)建了一個(gè)新的字符串

字符串在作為函數(shù)參數(shù)傳遞時(shí),實(shí)際上是拷貝了一份數(shù)據(jù)傳遞

最后:現(xiàn)在我們?cè)诨仡^看最開(kāi)的程序結(jié)果我們就不難明白其為什么會(huì)出現(xiàn)這樣的現(xiàn)象了

string使用注意點(diǎn)

1、避免額外的存儲(chǔ)空間開(kāi)銷(xiāo)

避免用+號(hào)來(lái)拼接字符串:

看下面的一個(gè)實(shí)例:

string str1 = "yuan";str1 = str1 + "hong";//// 這樣會(huì)創(chuàng)建兩個(gè)字符串3個(gè)字符串對(duì)象string strNew = "yuan" + "hong";/// 等效于 strNew="yuanhong",其實(shí)在編譯后也就是這個(gè)效果//// 只會(huì)創(chuàng)建一個(gè)字符串對(duì)象

再看一個(gè)實(shí)例:

//// 下面是兩種方式實(shí)現(xiàn)返回一個(gè)字符串123//// 方式1 string v11="1";string v22=v11+"2";string v33=v22+"3";retun v33;//// 采用方式1:系統(tǒng)會(huì)創(chuàng)建5個(gè)string對(duì)象//// 方式2//// 采用方式2:系統(tǒng)只會(huì)創(chuàng)建4個(gè)string對(duì)象string v1="1";string v2="2";string v3="3";retun v1+v2+v3;//// 從內(nèi)存開(kāi)銷(xiāo)誰(shuí)行來(lái)說(shuō),明顯方式2要優(yōu)于方式1

在實(shí)際開(kāi)發(fā)中,如果對(duì)字符串對(duì)象頻繁的拼接操作,建議使用StringBuilder

當(dāng)然c#中也有一只簡(jiǎn)化字符串拼接方式:String.Format ,其實(shí)其內(nèi)部實(shí)現(xiàn)原理也就是 StringBuilder

2、盡量少的裝箱

直接上代碼實(shí)例:

string str1 = "yunghong" + 66;string str2 = "yunghong" + 66.ToString();//// 查看編譯后的代碼,發(fā)現(xiàn)第一行代碼,需要有一個(gè)裝箱操作,裝箱操作,需要增加不必要的內(nèi)存開(kāi)銷(xiāo),第一:需要給值類型本身分布內(nèi)存,同時(shí)還要給類型指針和同板塊索引分配內(nèi)存開(kāi)銷(xiāo)

總結(jié):

在實(shí)際開(kāi)發(fā)中需要注意一下幾點(diǎn):

1、避免裝箱操作

2、避免使用+號(hào)拼接字符串

到此,關(guān)于“c#中string的特性介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

分享名稱:c#中string的特性介紹
文章起源:http://vcdvsql.cn/article40/pocdho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)搜索引擎優(yōu)化服務(wù)器托管云服務(wù)器品牌網(wǎng)站設(shè)計(jì)域名注冊(cè)

廣告

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

小程序開(kāi)發(fā)