C#中字符串的一般性和特殊性
string 類(lèi)型是C#的基元類(lèi)型之一,它是一個(gè)引用類(lèi)型,對(duì)應(yīng)FCL中的System.String類(lèi)型。string 類(lèi)型和普通的引用類(lèi)型相比有什么樣的相同點(diǎn)和不同點(diǎn)呢?
1、字符串具有固定不變性,字符串存在于System.String命名空間下,通過(guò)反編譯工具我們可以看到:
字符串中只有兩個(gè)只讀的屬性,沒(méi)有可設(shè)置的屬性,所以說(shuō)string 類(lèi)型的實(shí)例具有固定不變性。只要是改變了字符串的內(nèi)容,系統(tǒng)就會(huì)在堆內(nèi)存中生成一個(gè)全新的字符串。其實(shí)這一點(diǎn)并不能算作是字符串的特殊性,這和普通的引用類(lèi)型沒(méi)什么區(qū)別,只是string類(lèi)型在定義的時(shí)候,沒(méi)有創(chuàng)建可以寫(xiě)的屬性,所以這只能算作是字符串的一般特性。
演示代碼如下:
class Program { static void Main(string[] args) { string str1 = "Hi"; string str2 = str1; str2 = "Hello"; //這個(gè)操作相當(dāng)于給實(shí)例str2重新new了一個(gè)實(shí)例 Console.WriteLine("str1的值為:{0}", str1); Console.WriteLine("str2的值為:{0}", str2); Console.ReadKey(); } }
運(yùn)行結(jié)果如下:
2、字符串中駐留池的概念,這是string類(lèi)型特有的,所以這是字符串的特殊性。當(dāng)我們聲明的字符串和堆中已存在的某個(gè)字符串的值一樣時(shí),不會(huì)再在堆中開(kāi)辟空間,創(chuàng)建新的實(shí)例,而是將當(dāng)前聲明字符串的引用指向已經(jīng)存在的實(shí)例。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- C#中倒序輸出字符串的方法示例
- C# 刪除字符串中的中文(實(shí)例分享)
- C#字符串使用密鑰進(jìn)行加解密
- 總結(jié)C#刪除字符串?dāng)?shù)組中空字符串的幾種方法
- C#中圖片、二進(jìn)制與字符串的相互轉(zhuǎn)換方法
- C# DataTable中Compute方法用法集錦(數(shù)值/字符串/運(yùn)算符/表等操作)
- C#幾種截取字符串的方法小結(jié)
- c#實(shí)現(xiàn)16進(jìn)制和字符串之間轉(zhuǎn)換的代碼
- C# 16進(jìn)制與字符串、字節(jié)數(shù)組之間的轉(zhuǎn)換
- C#中使用split分割字符串的幾種方法小結(jié)
相關(guān)文章
VS2019下安裝和破解?DevExpress?19.2?插件的詳細(xì)教程
這篇文章主要介紹了VS2019?安裝并破解?DevExpress?19.2?插件的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03C# 實(shí)現(xiàn)Zookeeper分布式鎖的參考示例
Zookeeper分布式鎖的原理是巧妙的是使用了znode臨時(shí)節(jié)點(diǎn)的特點(diǎn)和監(jiān)聽(tīng)(watcher)機(jī)制,監(jiān)聽(tīng)機(jī)制很簡(jiǎn)單,就是我們可以給znode添加一個(gè)監(jiān)聽(tīng)器,當(dāng)znode節(jié)點(diǎn)狀態(tài)發(fā)生改變時(shí)(如:數(shù)據(jù)內(nèi)容改變,節(jié)點(diǎn)被刪除),會(huì)通知到監(jiān)聽(tīng)器。本文講解使用c#實(shí)現(xiàn)該功能2021-06-06Silverlight將圖片轉(zhuǎn)換為byte的實(shí)現(xiàn)代碼
這篇文章主要介紹了Silverlight將圖片轉(zhuǎn)換為byte的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-11-11C#實(shí)現(xiàn)在Excel中添加篩選器并執(zhí)行篩選的操作
自動(dòng)篩選器是 Excel 中的一個(gè)基本但極其有用的功能,它可以讓你根據(jù)特定的條件來(lái)自動(dòng)隱藏和顯示你的數(shù)據(jù),當(dāng)有大量的數(shù)據(jù)需要處理時(shí),這個(gè)功能可以幫你快速找到你需要的信息,下面將介紹如何使用免費(fèi).NET Excel庫(kù)在Excel中添加、應(yīng)用和刪除自動(dòng)篩選器,需要的朋友可以參考下2024-05-05C#中獲取程序路徑的幾種方法及其區(qū)別說(shuō)明
這篇文章主要介紹了C#中獲取程序路徑的幾種方法及其區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07C#中List〈string〉和string[]數(shù)組之間的相互轉(zhuǎn)換
List<string>和string[]數(shù)組之間的相互轉(zhuǎn)換,需要的朋友可以參考下2012-12-12mvc C# JavaScript LigerUI oracle實(shí)現(xiàn)用戶的注冊(cè)、登陸驗(yàn)證、登陸
這篇文章主要介紹了mvc C# JavaScript LigerUI oracle實(shí)現(xiàn)用戶的注冊(cè)、登陸驗(yàn)證、登陸的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04C#中datagridview的EditingControlShowing事件用法實(shí)例
這篇文章主要介紹了C#中datagridview的EditingControlShowing事件用法,實(shí)例分析了datagridview的EditingControlShowing事件的定義與使用技巧,需要的朋友可以參考下2015-06-06詳解C# Socket簡(jiǎn)單例子(服務(wù)器與客戶端通信)
這篇文章主要介紹了詳解C# Socket簡(jiǎn)單例子(服務(wù)器與客戶端通信) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12