日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
理解C#String類型:特殊的引用類型

有關C# String類型究竟是值類型還是引用類型,在很多C#學習者中都或多或少造成過困惑。好比下面這個例子:

成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設公司,專注網(wǎng)站建設公司、網(wǎng)站設計,有關企業(yè)網(wǎng)站設計方案、改版、費用等問題,行業(yè)涉及電動窗簾等多個領域,已為上千家企業(yè)服務,得到了客戶的尊重與認可。

 
 
 
  1. class Class1   
  2. {   
  3.     static void StrChange(string str)   
  4.     {   
  5.       str = "hellow";   
  6.     }   
  7.  
  8.     static void Main()   
  9.     {   
  10.       string str = "123";//申明一個字符串   
  11.       StrChange(str);//調(diào)用方法   
  12.       Console.WriteLine(str);//輸出字符串   
  13.     }   
  14. }   

輸出的結果是 "123" 。

那么,string 到底是值類型還是引用類型?有人會說,如果是值類型,結果倒還說的過去.但是string 的定義不是應該是引用類型么?如果是引用類型的話.輸出的結果難度不應該是: "hellow"么?

解答這個問題的關鍵在于,C# string類型是特殊的引用類型,它的實例是只讀的。這個地方要搞清楚語法和實現(xiàn)的區(qū)別 。在C#的語法中,

◆static void StrChange(string str) 是值傳遞

◆static void StrChange(ref string str) 是引用傳遞

但在實現(xiàn)上,static void StrChange(string str) 這種值傳遞,在函數(shù)體內(nèi)對str進行修改之前,與函數(shù)外部的變量指向同一塊內(nèi)存,是“引用”傳遞,但在函數(shù)體內(nèi)對str修改后,就會觸發(fā)對該str重新分配一塊內(nèi)存。

所以說,String 是引用類型,不過是不可變的。對字符串做一些操作(比如大小寫的轉換、+=), 實際上是重新創(chuàng)建了一個字符串。這也是為什么在做大量字符串拼接的時候要使用StringBuilder 而不用+=。

有關C# String類型做為引用類型的特別之處,可以參看下例的示例及注釋:   

 
 
 
  1. private void button2_Click(object sender, EventArgs e)   
  2.       {   
  3.           string str="aaa";   
  4.  
  5.           string str1 = str;   
  6.           str = "bbb";//注釋掉此名就"yes",否則"no".這就說明str重新賦值的時候,   
  7.           //其實是重新創(chuàng)建了一個名為str的字符串(內(nèi)存中指向的位置是不同的),先前   
  8.           //的那個str你就再也看不到了.   
  9.           string str2 = str;   
  10.         
  11.             
  12.           
  13.           if (object.ReferenceEquals( str1,str2))   
  14.           {   
  15.               MessageBox.Show("yes");   
  16.           }   
  17.           else   
  18.           {   
  19.               MessageBox.Show("no");   
  20.           }   
  21.       }  

最后回到一開始的那段代碼。如果想下面這樣編寫:

 
 
 
  1. class Class1   
  2. {   
  3.       
  4.     static string StrChange(string str)   
  5.     {   
  6.       str = "hellow";   
  7.         return str;   
  8.     }   
  9.     static void Main()   
  10.     {   
  11.         string str = "123";//申明一個字符串   
  12.         str=StrChange(str);//調(diào)用方法   
  13.         Console.WriteLine(str);//輸出字符串   
  14.     }   
  15.       
  16. }  

這樣輸出的便是hellow了。


當前題目:理解C#String類型:特殊的引用類型
網(wǎng)頁路徑:http://www.5511xx.com/article/ccddgho.html