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