前言:当一个方法需要多个返回值的时候,这个时候可能就需要ref或者out,但是通过元组可以更显简洁的实现方法返回多个参数,所以现在out和ref的使用似乎并不多了。
他们所实现的功能都是将值类型的参数,按照引用来传递,进而实现将我们对参数的修改变成了对原数据的修改,对于他们编译之后的程序没有区别,他们的区别在于语法的不同。
语法区别总结:
public void RefMethod(ref int a)
{
a = 10;
}
public void OutMethod(out int a)
{
a = 20;
}
1、ref指定的参数在函数调用时候必须初始化,不能为空的引用。而out指定的参数在函数调用时候可以不初始化,但是在函数内部要对其进行赋值;
int a;
int b = 100;
TestClass test = new TestClass();
test.RefMethod(ref a);//报错,使用了为赋值的变量a
Console.WriteLine(a);
test.OutMethod(out a);
Console.WriteLine(a);
2、out指定的参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。