c# out和ref的区别

1、两者都是按地址传递的,使用后都将改变原来参数的数值。

2、ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。

3、传递到 ref 参数的参数必须最先初始化。这与 out 不同,后者的参数在传递之前不需要显式初始化。

 int num = 5;
 Console.WriteLine("num={0}", num);
 ShowDouble(ref num);
 Console.WriteLine("num={0}", num);
int[] myArray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };
int maxIndex;
Max(myArray, out maxIndex);

4、但是,如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载

class Example
{
    public void Method(int i) { }
    public void Method(out int i) { }
}

你可能感兴趣的:(c#,c#)