1. 程式人生 > >深入C#.NET數據類型

深入C#.NET數據類型

拆箱 ref 結構 分享圖片 style 示例 技術 方式 表示

深入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;//數值引用賦值7
Console.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中。 --細分值類型和引用類型值類型 --基本數據類型: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數據類型