深入C#數據類型

數據類型按存儲方式可分為兩類:值類型(棧)和引類型(堆)
值類型:不同的變量會分配不同的存儲空間
存儲空間存儲的是該變量的值
改變一個變量值不會影響另一個變量值
引用類型:賦值是把原對象引用傳遞給另一個引用
兩個引用指向同一塊內存空間
結構的特點
1值類型
2具有較快數據提取速度(結構中可以有字段也可以有方法)
當對象需要較少字段表示時,可以選用結構
結構是值類型,數據提取速度快
但是頻繁的賦值操作會占有較大的空間,在開發中多數情況下定義為類
值類型和引用類型之間的轉換
裝箱
值類型 ------> 引用類型
<------
拆箱
在實際開發中應該減少不必要的裝箱和拆箱
因為二者的存儲方式不同,轉換時性能損失較大
不加ref傳遞參數,值傳遞,傳遞的是副本,不會改變原值
加ref把值類型按引用傳遞,傳遞的是引用地址,會改變原值
使用值傳遞,在方法中對參數值得更改在調用后不能保留;使用ref方式傳遞,可以將對參數值更改保留
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();} }
