面试的时候一般很高的概率会问到ref和out的区别。。。我们死记硬背的话很难记住。
建议大家和我一样简单的探索一下。动手试一下就能记住了。
共同点是我们在使用ref或者out的时候一定要在写的方法里面的参数前面加上ref和out
调用的时候也是一样要写上的
若要使用ref或者 out 参数,方法定义和调用方法都必须显式使用 ref或者out 关键字。
1 namespace test 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 int k;//我们定义了一个未初始化的int变量 8 //定义一个初始化之后的int变量 9 int i = 1; 10 11 //ref使用的时候必须要初始化。。 12 //在调用方法传递未初始化的变量的时候。系统提示“使用了未赋值的局部变量k” 13 //Myref(ref k); 14 15 //使用初始化之后的变量i试一下 16 Myref(ref i);//运行结果是1 17 18 //赋值一个初始化的i=1。 19 Myout(out i);//结果为3 20 //赋值一个未初始话的值k 21 Myout(out k);//结果为3 22 Console.ReadKey(); 23 24 } 25 static public void Myref(ref int number) 26 { 27 // number = 2;当我们对number值改变的时候。。输出结果会是2 28 Console.WriteLine(number); 29 } 30 //如果我们不对number赋值。。会提示在控制离开当前方法之前必须对out参数赋值。 31 static public void Myout(out int number) 32 { 33 //我们对number赋值之后输出 34 number = 3; 35 Console.WriteLine(number); 36 } 37 38 } 39 }
最后得出结论。。
1.使用ref调用方法。参数必须是初始化之后的变量。
2.使用out调用方法。参数可以不初始化。也可以传递初始化的参数。
3.使用ref作为参数的方法。方法可以不对传进来的参数赋值。
4.使用out作为参数的方法。方法必须对传进来的参数进行赋值。