- 值類型的數(shù)據(jù)存儲在內(nèi)存的棧中;引用類型的數(shù)據(jù)存儲在內(nèi)存的堆中喇伯,而內(nèi)存單元中只存放堆中對象的地址粘昨。
- 值類型存取速度快垢啼,引用類型存取速度慢窜锯。
- 值類型表示實際數(shù)據(jù),引用類型表示指向存儲在內(nèi)存堆中的數(shù)據(jù)的指針或引用
- 值類型繼承自System.ValueType芭析,引用類型繼承自System.Object
- 棧的內(nèi)存分配是自動釋放锚扎;而堆在.NET中會有GC來釋放
- 值類型的變量直接存放實際的數(shù)據(jù),而引用類型的變量存放的則是數(shù)據(jù)的地址馁启,即對象的引用驾孔。
- 值類型變量直接把變量的值保存在堆棧中,引用類型的變量把實際數(shù)據(jù)的地址保存在堆棧中惯疙,而實際數(shù)據(jù)則保存在堆中翠勉。注意,堆和堆棧是兩個不同的概念霉颠,在內(nèi)存中的存儲位置也不相同对碌,堆一般用于存儲可變長度的數(shù)據(jù),如字符串類型;而堆棧則用于存儲固定長度的數(shù)據(jù)蒿偎,如整型類型的數(shù)據(jù)int(每個int變量占用四個字節(jié))朽们。由數(shù)據(jù)存儲的位置可以得知,當(dāng)把一個值變量賦給另一個值變量時诉位,會在堆棧中保存兩個完全相同的值;而把一個引用變量賦給另一個引用變量骑脱,則會在堆棧中保存對同一個堆位置的兩個引用,即在堆棧中保存的是同一個堆的地址苍糠。在進(jìn)行數(shù)據(jù)操作時叁丧,對于值類型,由于每個變量都有自己的值岳瞭,因此對一個變量的操作不會影響到其它變量;對于引用類型的變量拥娄,對一個變量的數(shù)據(jù)進(jìn)行操作就是對這個變量在堆中的數(shù)據(jù)進(jìn)行操作,如果兩個引用類型的變量引用同一個對象瞳筏,實際含義就是它們在堆棧中保存的堆的地址相同条舔,因此對一個變量的操作就會影響到引用同一個對象的另一個變量。
C#中值類型和引用類型的區(qū)別
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門痒给,熙熙樓的掌柜王于貴愁眉苦臉地迎上來说墨,“玉大人,你說我怎么就攤上這事苍柏∧岣” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵试吁,是天一觀的道長棺棵。 經(jīng)常有香客問我,道長熄捍,這世上最難降的妖魔是什么烛恤? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮余耽,結(jié)果婚禮上缚柏,老公的妹妹穿的比我還像新娘。我一直安慰自己碟贾,他們只是感情好币喧,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缕陕,像睡著了一般粱锐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扛邑,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桐罕!你這毒婦竟也來了脉让?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布即寒,位于F島的核電站橡淆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏母赵。R本人自食惡果不足惜逸爵,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凹嘲。 院中可真熱鬧师倔,春花似錦、人聲如沸周蹭。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽凶朗。三九已至瓷胧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棚愤,已是汗流浹背搓萧。 一陣腳步聲響...