值传递和引用传递

 

// 值类型 int double decimal char bool enum struct

// 引用类型 string 数组 自定义类 object 集合 接口

 

存储上区别:

值类型:存在栈上

引用类型:存在堆上

 

值传递 例子1 

1             // 值传递
2             int n1 = 10;
3             int n2 = n1;
4             n2 = 20;
5             Console.WriteLine(n1);
6             Console.WriteLine(n2);
7             Console.ReadKey();

结果 : n1:10

             n2:20

值传递 例子2

1             int number = 10;
2             TestTwo(number);
3             Console.WriteLine(number);
4             Console.ReadKey();
5 
6         public static void TestTwo(int n)
7         {
8             n += 10;
9         }

值传递 例子3

1             int number = 10;
2             TestThree(ref number);
3             Console.WriteLine(number);
4             Console.ReadKey();
5 
6         public static void TestThree(ref int n)
7         {
8             n += 10;
9         }

引用类型例1

1             // 引用传递
2             Person p1 = new Person();
3             p1.Name = "张三";
4             Person p2 = p1;
5             p2.Name = "李四";
6             Console.WriteLine(p1.Name);
7             Console.WriteLine(p2.Name);
8             Console.ReadKey();

结果: 李四, 李四

引用类型例2

 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             // 引用传递调用方法
 6             Person p = new Person();
 7             p.Name = "张三";
 8             Test(p);
 9             Console.WriteLine(p.Name);
10             Console.ReadKey();
11         }
12 
13         public static void Test(Person pp)
14         {
15             Person p = pp;
16             p.Name = "李四";
17         }
18     }

结果:李四

引用类型例3 特别string

1             string s1 = "张三";
2             string s2 = s1;
3             s2 = "李四";
4             Console.WriteLine(s1);
5             Console.WriteLine(s2);
6             Console.ReadKey();

 

结果:s1: 张三 s2:李四

posted @ 2018-11-18 22:46  紫华  阅读(139)  评论(0编辑  收藏  举报