值类型与引用类型传递的艺术

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 Animal
54     {
55         public int eye = 2;
56     }

 

 

posted @ 2013-10-12 09:54  WIN8新人  阅读(142)  评论(0编辑  收藏  举报