值型別和引用型別的區別

2021-06-21 15:07:38 字數 581 閱讀 1068

引用型別的資料有:class,inte***ce,delegate,object,string,null型別,陣列,datetime等。

值型別:一般的資料型別,列舉,struct等等。

兩種資料型別最主要是在記憶體中的儲存位置不同——堆和棧。

1、值型別和引用型別在記憶體中的儲存方式:

1)值型別只需要一段單獨的記憶體空間,存放實際的資料;資料存放在棧中。

2)引用型別需要兩段記憶體空間,一段存放實際的資料,存放在堆中;一段存放指向資料位址的引用,存放在棧中、

2、儲存引用型別物件的成員

當乙個引用型別物件他含有值型別的成員時,他的成員也是儲存在堆中,也就是說,對於乙個引用型別的任何物件,他的所有成員對存放在堆裡,不管是值型別還是引用型別。

3、值型別繼承自system.valuetype,引用型別繼承自system.object

4、值型別的效率高,不需要位址轉換

5、記憶體**:值型別出棧及使用完後立即**;引用型別

使用完後不會立即**,而是交給gc處理

6、型別擴充套件:值型別不容易擴充套件,所有值型別都是seal的,無法重寫或繼承,派生出新的值型別;而引用型別具有多型特性

值型別和引用型別區別

3.1.3 值型別和引用型別的區別 37 值型別和引用型別的基本概念 值型別和引用型別的記憶體分配 值型別的基類 分析問題 所有.net 的型別都可以分為兩類 值型別和引用型別。最簡單也最明確的乙個區分標準是 所有的值型別都繼承自 system.valuetype system.valuetype ...

值型別和引用型別區別

3.1.3 值型別和引用型別的區別 37 值型別和引用型別的基本概念 值型別和引用型別的記憶體分配 值型別的基類 分析問題 所有.net 的型別都可以分為兩類 值型別和引用型別。最簡單也最明確的乙個區分標準是 所有的值型別都繼承自 system.valuetype system.valuetype ...

引用型別和值型別區別

1.普通的資料型別,和結構體 列舉等,是值型別,賦值時,會建立乙個備份,給新的變數。2.類 物件是引用型別,賦值時,並不會新建物件的副本,而是把物件的位址給新物件名。所以,物件名中儲存的並不是完整物件的內容,只儲存了找到這個物件的位址。3.sets 集 3.1概念 相同型別 沒有固定順序 數值不能重...