C 中引用型別和值型別分別有哪些

2021-08-20 18:36:17 字數 994 閱讀 7380

c#的值型別包括:結構體(數值型別,bool型,使用者定義的結構體),列舉,可空型別。

c#的引用型別包括:陣列,使用者定義的類、介面、委託,object,字串。

陣列的元素,不管是引用型別還是值型別,都儲存在託管堆上。

引用型別在棧中儲存乙個引用,其實際的儲存位置位於託管堆。為了方便,本文簡稱引用型別部署在託管推上。

值型別總是分配在它宣告的地方:作為欄位時,跟隨其所屬的變數(例項)儲存;作為區域性變數時,儲存在棧上。

值型別在記憶體管理方面具有更好的效率,並且不支援多型,適合用作儲存資料的載體;引用型別支援多型,適合用於定義應用程式的行為。

c#的資料型別有三大類: 

1.數值型別

2.引用型別

3.指標型別(僅用於非安全**)

其中,

1.1 數值型別包括:結構型別(struct)和列舉型別(enum)

1.1.1 結構型別有:簡單型別和使用者自定義結構型別

1.1.1.1 簡單型別有:整型(byte、sbyte、long、ulong、short、ushort、 int、uint)、浮點數型別(float、double)、十進位制型別(decimal)、字元型別(char)、布林型(bool)

2.1 引用型別又包括:類(class、object、string)、介面(inte***ce)、陣列(array)、**(delegate)

2.1.1 類包括:使用者自定義的類、object基類、字串類

成員變數值型別的預設值:

int型別的預設值是0

string型別的預設值是null

double型別的預設值是0.0d

integer型別的預設值是null

long型別的預設值是null

long型別的預設值是0l

float型別的預設值是0.0f

char型別的預設值是\u0000

byte型別的預設值是(byte)0

short型別的預設值是(short)0

C 中引用型別和 值型別

值型別 儲存在棧 stack 中,乙個值型別的變數其實是乙個記憶體位址,位址中儲存的就是值本身 包括c 的基本型別 用關鍵字int char float等來宣告 結構 用struct關鍵字宣告的型別 列舉 用enum關鍵字宣告的型別。引用型別 儲存在堆 heap 中,乙個引用型別的變數的值是乙個指標...

C 中引用型別和值型別

c 的值型別包括 結構體 數值型別,bool型,使用者定義的結構體 列舉,可空型別。c 的引用型別包括 陣列,使用者定義的類 介面 委託,object,字串。值型別和引用型別的區別在於,值型別的變數直接存放實際的資料,而引用型別的變數存放的則是資料的位址,即物件的引用。值型別變數直接把變數的值儲存在...

C 中引用型別和值型別

c 的值型別包括 結構體 數值型別,bool型,使用者定義的結構體 列舉,可空型別。c 的引用型別包括 陣列,使用者定義的類 介面 委託,object,字串。值型別和引用型別的區別在於,值型別的變數直接存放實際的資料,而引用型別的變數存放的則是資料的位址,即物件的引用。值型別變數直接把變數的值儲存在...