国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

C#字符串的不變性

2019-11-14 13:51:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  看過(guò)一些C#教程的人都應(yīng)該知道這句話:“在C#中,一旦對(duì)字符串對(duì)象進(jìn)行初始化,該字符串對(duì)象就不能再被該變“。這句話可用簡(jiǎn)單的圖示來(lái)說(shuō)明:

  1、聲明變量 string str="first";

    在執(zhí)行這句代碼時(shí),首先在棧上開(kāi)辟出一塊兒內(nèi)存空間用于存放變量str,然后在堆上開(kāi)辟出一塊兒空間用于存放字符串對(duì)象"First",str變量存放指向"First"的引用

    注意,str只是string類型的變量,不是字符串對(duì)象,堆上的那一坨才是字符串對(duì)象。

  2、改變變量str的值,str="Second";

     在執(zhí)行這句代碼時(shí),會(huì)在堆上開(kāi)辟出一塊兒新的內(nèi)存空間用來(lái)存放新對(duì)象“Second”,str指向新對(duì)象地址,原來(lái)的對(duì)象“First”并沒(méi)有改變,該對(duì)象在不再被其它變量引用的情況下,將被垃圾回收器回收。

 

  

下面使用代碼來(lái)進(jìn)行說(shuō)明(使用ReferenceEquals方法來(lái)判斷字符串變量的引用是否改變):

 1 using System; 2 namespace CwjString 3 { 4     class Demo 5     { 6         static void Main(string[] args) 7         { 8             string str01="str01"; 9             string str02=str01;//這時(shí)str01和str02指向托管堆上的同一個(gè)對(duì)象,str01和str02有著相同的引用10             System.Console.WriteLine("str01和str02是否有相同的引用?{0}",ReferenceEquals(str01,str02));11             System.Console.WriteLine("str01={0},str02={1}",str01,str02);12             13             //改變str02的值14             //PS:因?yàn)樽址牟豢勺冃裕@里不會(huì)真正的去改變str02的值15             //而是在托管堆上重新分配一塊兒內(nèi)存,然后str02指向這個(gè)新的string對(duì)象16             str02="str02";17             System.Console.WriteLine("str01和str02是否有相同的引用?{0}",ReferenceEquals(str01,str02));18             System.Console.WriteLine("str01={0},str02={1}",str01,str02);19         }20     }21 }

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丁青县| 洪洞县| 厦门市| 新巴尔虎左旗| 西充县| 商城县| 辽源市| 安吉县| 马山县| 临夏县| 铜鼓县| 社旗县| 衡山县| 二连浩特市| 河池市| 台前县| 托克逊县| 澜沧| 福安市| 汨罗市| 平江县| 沾化县| 常州市| 保德县| 鲁山县| 财经| 太白县| 兖州市| 青冈县| 油尖旺区| 红河县| 福安市| 始兴县| 轮台县| 雅江县| 蓬莱市| 平谷区| 巢湖市| 陇南市| 马公市| 辽阳市|