一:值型別與引用型別
值型別源於system.valuetype家族,值型別包括基本資料型別,結構型別和列舉型別。
值型別:在棧上儲存的真實的值。
引用型別源於system.object家族,在c#中引用型別主要包括陣列、類、介面、string型別等。
引用型別:在棧和堆上都要分配空間。
值型別例題:
1 class program2 {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 program2 {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 基礎型別是類,使用中記憶體儲存在堆中常用...