ref和out的区别

首先:两者都是按地址传递的,使用后都将改变原来参数的数值,都是通过被调用方来改变其数值

其次:ref是可以将参数的数值传递到函数内部,然后再改变,而out则是传递的时候先清空,还有ref传递前,调用方要先对参数进行初始化,out不用,是在被调用方内进行初始化。但有一个共同点就是不管是out,还是ref都要先对变量进行声明。

out 例子:

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int a;
 6             new Program().Run(out a);
 7 
 8             //输出的结果为12
 9             Console.WriteLine(a);
10             Console.ReadKey();
11         }
12 
13         public  void  Run(out int a)
14         {
15 
16             a = 12;
17           
18         }
19       
20     }

ref 例子:

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int a=0;  //要实现对其进行初始化,否则报错
 6             new Program().Run(ref a);
 7 
 8             //输出的结果为12
 9             Console.WriteLine(a);
10             Console.ReadKey();
11         }
12         public  void  Run(ref int a)
13         {
14             a = 12;
15         }
16       
17     }

 

posted @ 2013-09-11 14:37  nanyangzp  阅读(223)  评论(0编辑  收藏  举报