|
系列文章導(dǎo)航:
.NET Discovery 系列之一--string從入門到精通(上)
.NET Discovery 系列之二--string從入門到精通(勘誤版下)
.NET Discovery 系列之三--深入理解.NET垃圾收集機(jī)制(上)
.NET Discovery 系列之四--深入理解.NET垃圾收集機(jī)制(下)
.NET Discovery 系列之五--Me JIT(上)
.NET Discovery 系列之六--Me JIT(下)
.NET Discovery 系列之七--深入理解.NET垃圾收集機(jī)制(拾貝篇)
string是一種很特殊的數(shù)據(jù)類型,它既是基元類型又是引用類型,在編譯以及運(yùn)行時(shí),.NET都對(duì)它做了一些優(yōu)化工作,正式這些優(yōu)化工作有時(shí)會(huì)迷惑編程人員,使string看起來難以琢磨,這篇文章分上下兩章,共四節(jié),來講講關(guān)于string的陌生一面。
一.恒定的字符串
要想比較全面的了解stirng類型,首先要清楚.NET中的值類型與引用類型。在C#中,以下數(shù)據(jù)類型為值類型:
bool、byte、char、enum、sbyte以及數(shù)字類型(包括可空類型)
以下數(shù)據(jù)類型為引用類型:
class、interface、delegate、object、stirng
看到了嗎,我們要討論的stirng赫然其中。被聲明為string型變量存放于堆中,是一個(gè)徹頭徹尾的引用類型。
那么許多同學(xué)就會(huì)對(duì)如下代碼產(chǎn)生有疑問了,難道string類型也會(huì)“牽一發(fā)而動(dòng)全身”嗎?讓我們先來看看以下三行代碼有何玄機(jī):
string a = "str_1";
string b = a;
a = "str_2";
NET技術(shù):.NET Discovery 系列之一--string從入門到精通(上),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。