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)文章
基于C#實(shí)現(xiàn)音樂(lè)文件的播放功能
本文介紹了如何使用C#編寫(xiě)一個(gè)簡(jiǎn)單的程序來(lái)實(shí)現(xiàn)音樂(lè)文件的播放功能,程序能夠讀取MP3文件和ogg文件,并通過(guò)合適的控件進(jìn)行播放,同時(shí),程序具備處理異常、良好的用戶(hù)界面和兼容性的特點(diǎn),感興趣的朋友可以自己動(dòng)手嘗試一下2024-05-05
C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法
這篇文章主要介紹了C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法,本文分別給出了使用微軟語(yǔ)言包、手動(dòng)編碼實(shí)現(xiàn)兩種實(shí)現(xiàn)方式,需要的朋友可以參考下2015-01-01
C#通過(guò)實(shí)現(xiàn)winmm枚舉音頻設(shè)備
使用C#做音頻錄制時(shí)需要獲取音頻設(shè)備信息,其中比較簡(jiǎn)單的就是使用winmm,所以本文就為大家介紹一下C#如何通過(guò)實(shí)現(xiàn)winmm枚舉音頻設(shè)備,需要的可以參考下2023-10-10
C#將HashTable中鍵列表或值列表復(fù)制到一維數(shù)組的方法
這篇文章主要介紹了C#將HashTable中鍵列表或值列表復(fù)制到一維數(shù)組中方法,涉及C#操作HashTable的相關(guān)技巧,需要的朋友可以參考下2015-04-04
C# 對(duì)MongoDB 進(jìn)行增刪改查的簡(jiǎn)單操作實(shí)例
這篇文章介紹了C# 對(duì)MongoDB 進(jìn)行增刪改查的簡(jiǎn)單操作實(shí)例,有需要的朋友可以參考一下2013-09-09
C#實(shí)現(xiàn)將一個(gè)矩陣分解為對(duì)稱(chēng)矩陣與反稱(chēng)矩陣之和的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將一個(gè)矩陣分解為對(duì)稱(chēng)矩陣與反稱(chēng)矩陣之和的方法,較為詳細(xì)的分析了矩陣分解運(yùn)算的原理與C#實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-08-08
C# web.config之<customErrors>節(jié)點(diǎn)說(shuō)明案例詳解
這篇文章主要介紹了C# web.config之<customErrors>節(jié)點(diǎn)說(shuō)明案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08

