值類型和引用類型 常用的數據類型 整形 int 浮點型 foalt 雙精度浮點型 double 字元串 string ...
值類型和引用類型
常用的數據類型
整形 int 浮點型 foalt 雙精度浮點型 double 字元串 string 布爾 bool 枚舉 enum
值類型
值類型繼承與System.ValueType類,每個值類型的對象都有一個獨立的記憶體區域用於保存自己的值,值類型數據所在的記憶體區域稱為棧(Stack)。只要在代碼中修改它,就會在它的記憶體區域內保存這個值。
引用類型
引用類型繼承與System.Object類,在C#中引用類型主要包括數組、類和介面等。
細分值類型和引用類型
值類型:
基本數據類型:
整形 int 長整形 long 浮點型 foalt 雙精度浮點型 double 字元型 char 布爾型 bool
枚舉類型: enum
結構類型: struct
引用類型:
類:
基類 System.Object 字元串 string 自定義類 class
介面:interface
數組:int【】,string【】
結構
結構定義
訪問修飾符 sturct 結構名 { //結構體 }
結構的特點:
-
機構中可以有欄位也可以有方法
- 定義時結構內的欄位不能被賦初值
- 結構的使用
- 結構可以不用new 直接定義結構的對象即可
- 聲明結構的對象後必須給結構賦初值
-
demo:
public struct student {public int id/;IDpublic int age //年齡
public void sayhi() { Console.WriteLine("學號:"+id+"年齡:"+age) } } //結構定義
public static void Main(string[] args) { student stu; stu.id=1234; stu.age=18; stu.sayhi(); } //結構調用
值方式參數傳遞
值方式參數傳遞時,參數是值類型則在調用後值不變,是引用類型時值可變
引用方式參數傳遞
引用方式參數傳遞時,不管參數時值類型還是引用類型調用後值都可變
demo:
值方式傳遞值類型參數
public void addage(int age) { age++; } static void Main(string[] args) { stu sb = new stu(); int num = 3; Console.WriteLine(num); sb.addage(num); Console.WriteLine(num); }
結果:
值方式傳遞引用類型參數
public class stu { public int age; public void addage(stu student) { student.age++; } } public static void Main(string[] args) { stu sb = new stu(); sb.age= 3; Console.WriteLine(sb.age); sb.addage(sb); Console.WriteLine(sb.age); }
結果:
引用方式傳遞值類型參數
public void addage( ref int age) { age++; } static void Main(string[] args) { stu sb = new stu(); int num = 3; Console.WriteLine(num); sb.addage(ref num); Console.WriteLine(num); }
結果:
引用方式傳遞引用類型參數
public class stu { public int age; public void addage( ref stu student) { student.age++; } } public static void Main(string[] args) { stu sb = new stu(); sb.age= 3; Console.WriteLine(sb.age); sb.addage( ref sb); Console.WriteLine(sb.age); }結果: