首先:两者都是按地址传递的,使用后都将改变原来参数的数值,都是通过被调用方来改变其数值
其次: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 }