標籤:一個 tac 資料 hang rgs ace alt 參考型別 gpo
深入C#資料類型
--不同類型的參數傳遞使用值傳遞,在方法中對參數的更改在調用後不能保留。使用ref方式傳遞,可以保留對參數值的更改。 ---值方式參數傳遞和引用方式傳遞使用值方式(不用ref修飾)傳遞實值型別參數時,參數在方法中的修改不會保留。使用值方式(不用ref修飾)參考型別參數時,參數在方法中的修改會保留。使用引用方式(不用ref修飾)傳遞實值型別和參考型別參數時,參數在方法中的修改都會保留。
資料類型按儲存方式可分為兩類:實值型別(棧)和引類型(堆)
實值型別:不同的變數會分配不同的儲存空間
儲存空間儲存的是該變數的值
改變一個變數值不會影響另一個變數值
參考型別:賦值是把原對象引用傳遞給另一個引用
兩個引用指向同一塊記憶體空間
結構的特點
1實值型別
2具有較快資料提取速度(結構中可以有欄位也可以有方法)
當對象需要較少欄位表示時,可以選用結構
結構是實值型別,資料提取速度快
但是頻繁的賦值操作會佔有較大的空間,在開發中多數情況下定義為類
實值型別和參考型別之間的轉換
裝箱
實值型別 ------> 參考型別
<------
拆箱
在實際開發中應該減少不必要的裝箱和拆箱
因為二者的儲存方式不同,轉換時效能損失較大
不加ref傳遞參數,值傳遞,傳遞的是副本,不會改變原值
加ref把實值型別按引用傳遞,傳遞的是引用地址,會改變原值
使用值傳遞,在方法中對參數值得更改在調用後不能保留;使用ref方式傳遞,可以將對參數值更改保留
實值型別和參考型別.C#常用資料類型
java C#整形
int int浮點型
float float雙精確度行
double double字串
Strinng string布爾類
boolean bool枚舉類
enum enum
--實值型別源於System.ValueType家族,每個實值型別的對象都有一個獨立的記憶體地區用於儲存自己的值,實值型別資料所在的記憶體地區稱為棧(Stack)。只要在代碼中修改它,就會在它的記憶體地區儲存這個值。小結對實值型別,不同的變數會分配不同的儲存空間,並且儲存空間中的儲存的是改變數的值。賦值操作傳遞值的是變數的值,改變一個變數的值不會影響另一個變數的值。--應用類型源於System.Object家族在C#中參考型別主要包括數值,類的介面等。
樣本--classprogram{staticvoidMain(string[] args){5int[] infozhang =newint[] {170,60};//張浩的身高和體重資訊int[] infoli=infozhang;//數值引用賦值7Console.WritLine("去年--張浩的身高{0},體重{1}",infozhong[0],infozhong[1]);Console.WritLine("去年--李明的身高{0},體重{1}",infoli[0],infoli[1]);infoli[0]=180;infoli[1]=70;Console.WritLine("今年--張浩的身高{0},體重{1}",infozhong[0],infozhong[1]);Console.WritLine("今年--李明的身高{0},體重{1}",infoli[0],infoli[1]);13Console.ReadLine();}}
數組複製可以利用迴圈實現,對於兩個數組arry1和arry2(arry2的長度不小於arry1的長度)將數組arry1中元素的值複製到arry2中。--細分實值型別和參考型別實值型別--基礎資料型別 (Elementary Data Type):int 長度型:long 浮點型: float double char bool枚舉類:enum結構類:struct參考型別--類:基類:System.Object 字串:string 自訂類:class介面:interface數組:int [] ,string[] ---結構定義:存取修飾詞 struct 結構名{ //結構體}結構的定義有以下特點--結構中可以有欄位,也可以有資料--定義時,結構中的欄位不能被賦初值結構的使用可以不用new 直接定義對象即可聲明結構對象後,必須給結構的成員賦初值-------裝箱和拆箱
總結:使用值傳遞時,(不用ref修飾)傳遞實值型別參數時,參數在方法中的修改不會保留;使用值傳遞時,(不用ref修飾)傳遞參考型別參數時,參數在方法中的修改會保留;使用引用方式(不用ref修飾)傳遞實值型別參數時或者傳遞參考型別參數時,參數在方法中的修改都會保留;不加ref傳遞參數,值傳遞,引用傳遞的是副本,不會改變原值,加ref,把實值型別按照引用傳遞,傳遞的是引用地址,會改變原值實值型別======》參考型別----------裝箱參考型別=====》值傳遞--------拆箱結構體struct的特點:實值型別資料,不用new關鍵字具有較快的資料提取速度結構中有欄位,也可以有方法(欄位不可以直接賦初始值)
深入C#.NET資料類型