標籤:span 影響 ref bsp 保留 height 訪問 依據 空間
資料類型按儲存方式可分為兩類:實值型別和參考型別.
1實值型別
實值型別源於System.ValueType家族,每個實值型別的對象都有一個獨立的記憶體地區用於儲存自己的值,
實值型別資料所在的記憶體地區成為棧(Stack),只要代碼中修改它,就會在它的地區內儲存這個值,實值型別主要包括基礎資料型別 (Elementary Data Type)和枚舉類型等.
對於實值型別,不同的變數會分配不同的儲存空間,並且儲存空間中儲存的是該變數的值,賦值操作傳遞的是變數的值,改變一個變數的值不會影響另一個變數的值.
2.參考型別
參考型別源於System.Object家族,在C#中參考型別主要包括數組,類和介面等.
對於參考型別,賦值是把原對象的引用傳遞給另一個引用,對數組而言,當一個數組引用賦值給另一個數組引用後,這兩個引用指向同一個數組,也就是指向同一塊
儲存空間.
細分實值型別和參考型別
實值型別:1. 基礎資料型別 (Elementary Data Type) 2.枚舉類型 3.結構類型
參考型別: 1.類 2.介面 3.數組
結構
1.結構的定義
存取修飾詞 struct 結構名
{
//結構體
}
結構的定義有以下特點:
1.結構中可以有欄位,也可以有方法
2.定義時,結構中的欄位不能被賦初值
結構的使用
1.可以不用new
2.聲明結構的對象後,必須給結構的成員賦初值.
裝箱和拆箱
1 int i = 123;2 object o = i; //裝箱:實值型別轉換為參考型別3 int j=(int)o; //拆箱:參考型別轉換為實值型別
不同類型的參數傳遞
1.怎樣區分是值傳遞還是引用傳遞?
判斷依據是有沒有ref.
2.使用值方式(不用ref修飾)傳遞實值型別參數時,參數在方法中的修改不會保留.
使用值方式(不用ref修飾)傳遞參考型別參數時,參數在方法中的修改會保留
使用引用方式(用ref修飾)傳遞實值型別或參考型別參數時,參數在方法中的修改都會保留
深入c#資料類型