适合新手看的ref和out

面试的时候一般很高的概率会问到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作为参数的方法。方法必须对传进来的参数进行赋值。

 

原文地址:https://www.cnblogs.com/melodygkx/p/6086339.html