1. 值类型参数按值传递
2. 引用类型参数按值传递
3. 值类型参数按引用传递
4. 引用类型参数按引用传递
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //示例1.值类型按值传递,操作的是该值类型实际的一份拷贝 6 int a = 20; 7 Add(a);//传递的是在堆栈上面a的一份拷贝 8 Console.WriteLine(a); 9 10 //示例2.引用类型按值传递,操作的是该引用类型对象的引用地址(但是该引用还是按值传递的),所以会影响改变原来对象11 Animal Robbit = new Animal();12 AddRef(Robbit);13 //按值传递总结:都是传递的值,值类型传递的是值类型 “值”的拷贝 引用类型:传递的是对象的引用地址14 15 16 17 18 //示例3.值类型的按引用传递:传递的是其实际值的地址,相对于操作的是值类型在堆栈上面的那块内存19 int i = 33;20 ChangeInt(ref i);21 Console.WriteLine(i.ToString());22 //示例4.引用类型按引用传递,传递的是对象引用的引用23 string str = "WOW";24 ChangeRef(ref str);25 Console.WriteLine(str);26 Console.ReadKey();27 28 //按引用传递总结:是传递参数的地址,29 30 }31 32 static void ChangeRef(ref string astr)33 {34 astr = "hello word";35 }36 37 static void ChangeInt(ref int i)38 {39 i = 22;40 41 }42 static void AddRef(Animal robbit)43 {44 robbit.eye = 3;45 Console.WriteLine(robbit.eye);46 }47 static void Add(int i)48 {49 i = 200;50 }51 }52 53 public class Animal54 {55 public int eye = 2;56 }