3 回答
TA貢獻1860條經驗 獲得超8個贊
1、速度上的區別
值類型存取速度快,引用類型存取速度慢。
2、用途上的區別
值類型表示實際數據,引用類型表示指向存儲在內存堆中的數據的指針或引用。
3、來源上的區別
值類型繼承自System.ValueType,引用類型繼承自System.Object
4、位置上的區別
值類型的數據存儲在內存的棧中,引用類型的數據存儲在內存的堆中,而內存單元中只存放堆中對象的地址。
5、類型上的區別
值類型的變量直接存放實際的數據,而引用類型的變量存放的則是數據的地址,即對象的引用。
6、保存位置上的區別
值類型變量直接把變量的值保存在堆棧中,引用類型的變量把實際數據的地址保存在堆棧中,而實際數據則保存在堆中。
例如:
字符串類型,而堆棧則用于存儲固定長度的數據,如整型類型的數據int(每個int變量占用四個字節)。
由數據存儲的位置可以得知,當把一個值變量賦給另一個值變量時,會在堆棧中保存兩個完全相同的值;而把一個引用變量賦給另一個引用變量,則會在堆棧中保存對同一個堆位置的兩個引用,即在堆棧中保存的是同一個堆的地址。
在進行數據操作時,對于值類型,由于每個變量都有自己的值,因此對一個變量的操作不會影響到其它變量;對于引用類型的變量,對一個變量的數據進行操作就是對這個變量在堆中的數據進行操作,
如果兩個引用類型的變量引用同一個對象,實際含義就是它們在堆棧中保存的堆的地址相同,因此對一個變量的操作就會影響到引用同一個對象的另一個變量。
- 3 回答
- 0 關注
- 582 瀏覽
添加回答
舉報

