深入C 資料型別

2022-08-05 04:57:23 字數 2999 閱讀 3032

一:值型別與引用型別

值型別源於system.valuetype家族,值型別包括基本資料型別,結構型別和列舉型別。

值型別:在棧上儲存的真實的值。

引用型別源於system.object家族,在c#中引用型別主要包括陣列、類、介面、string型別等。

引用型別:在棧和堆上都要分配空間。

值型別例題:

1 class program

2 {3 static void main(stringargs)

4 {

5 int heightzhang=170;

6 int heightli=heightzhang;

7 console.writeline("去年--張浩的身高是:"+heightzhang+「李明的身高是:」+heightli);

8 heightli=180;

9 console.writeline("今年--張浩的身高是:"+heightzhang+「李明的身高是:」+heightli);

引用型別**:

注意:值傳遞和引用傳遞判定依據是有沒有ref關鍵字

結論:01.如果方法的引數型別本身就是引用型別,那麼對引數值的修改會永久儲存

例如:public void tp(se se)

se.count++;//真正的修改se物件的count值

02.如果方法的引數型別本身是值型別,又沒有ref修飾,那麼對引數值的修改,不會永久儲存()

03.如果方法的引數型別本身是值型別,但是有ref修飾,那麼物件引數值的修改,也會永久儲存。

值型別傳遞 :不帶ref的引數傳遞   se se

引用型別傳遞:帶ref的引數傳遞 

二:結構

/*01.結構體不用new,就可以直接對其屬性賦值

*02.結構體中可以有欄位,屬性和方法

*03.結構體是值型別,類是引用型別

*04.在結構體中不能給字段賦初值,但是類中可以.

*05.結構體中沒有預設建構函式,但類中有預設建構函式

三:建構函式

預設如果定義了乙個類,系統會自動的生成乙個和該類名稱相同,並且沒有返回值型別,甚至連void都沒有的方法,該方法就稱為建構函式!

student stu=new student();

注意問題:值型別的直接父類都是valuetype,而valuetype又繼承自object

特殊的值型別:列舉和結構體

特殊的引用型別:陣列和介面

一:值型別與引用型別

值型別源於system.valuetype家族,值型別包括基本資料型別,結構型別和列舉型別。

值型別:在棧上儲存的真實的值。

引用型別源於system.object家族,在c#中引用型別主要包括陣列、類、介面、string型別等。

引用型別:在棧和堆上都要分配空間。

值型別例題:

1 class program

2 {3 static void main(stringargs)

4 {

5 int heightzhang=170;

6 int heightli=heightzhang;

7 console.writeline("去年--張浩的身高是:"+heightzhang+「李明的身高是:」+heightli);

8 heightli=180;

9 console.writeline("今年--張浩的身高是:"+heightzhang+「李明的身高是:」+heightli);

引用型別**:

注意:值傳遞和引用傳遞判定依據是有沒有ref關鍵字

結論:01.如果方法的引數型別本身就是引用型別,那麼對引數值的修改會永久儲存

例如:public void tp(se se)

se.count++;//真正的修改se物件的count值

02.如果方法的引數型別本身是值型別,又沒有ref修飾,那麼對引數值的修改,不會永久儲存()

03.如果方法的引數型別本身是值型別,但是有ref修飾,那麼物件引數值的修改,也會永久儲存。

值型別傳遞 :不帶ref的引數傳遞   se se

引用型別傳遞:帶ref的引數傳遞 

二:結構

/*01.結構體不用new,就可以直接對其屬性賦值

*02.結構體中可以有欄位,屬性和方法

*03.結構體是值型別,類是引用型別

*04.在結構體中不能給字段賦初值,但是類中可以.

*05.結構體中沒有預設建構函式,但類中有預設建構函式

三:建構函式

預設如果定義了乙個類,系統會自動的生成乙個和該類名稱相同,並且沒有返回值型別,甚至連void都沒有的方法,該方法就稱為建構函式!

student stu=new student();

注意問題:值型別的直接父類都是valuetype,而valuetype又繼承自object

特殊的值型別:列舉和結構體

特殊的引用型別:陣列和介面

深入C 資料型別

源於 system value type家族 主要包括 基本資料型別和列舉型別 結構型別 對於值型別,不同的變數會分配不同的儲存控制項,並且儲存空間中儲存的是該變數的的值。改變乙個變數的值不會影響另乙個變數的值。源於 system object家族 主要包括 類 介面和陣列 如果直接賦值給其他變數,...

深入C 資料型別

值型別 源於system.valuetype 引用型別 源於system.object 結構中可以有字段也可以有方法 定義時,結構中的字段不能被賦初值 可以不用new,直接定義結構的物件即可 前提該屬性的型別不是數值型別 宣告結構的物件後,必須給結構的成員賦初值 結構體中沒有預設建構函式,但類中有預...

C 深入解析資料型別

1.值型別和引用型別的原理 2.執行緒棧和託管堆 3.裝箱和拆箱 4.型別判等 c 的基本型別是按照資料在計算機記憶體是如何被分配來劃分,一種是值型別 value type 基礎型別是結構,使用中記憶體儲存在棧中,一種是引用型別 reference type 基礎型別是類,使用中記憶體儲存在堆中常用...