前言
今天我们来了解一下out和ref。他们都是传值的,可以返回多个返回值,但是两者的区别您知道吗?
out
如果方法的参数用out修饰了,那么这个参数必须在方法里进行赋值,参数加out,是把这个方法中的参数的值传到方法外面去了
static void Main(string[] args)
{
//即使此处赋值,但是结果仍是10,20;因为out又对其进行了重新赋值
int number1 = 100;
int number2 = 200;
int sum = SumNumber(out number1, out number2);
Console.WriteLine("{0},{1}", number1, number2);
Console.ReadKey();
}
public static int SumNumber(out int num1,out int num2)//out
{
//此处不能注释,out需要在方法内赋值,它的值可以传出去
num1 = 10;
num2 = 20;
return num1 + num2;
}
运行出的结果number1和number2的结果为10,20。
ref
用的时候必须要给这个变量赋初值。和out有区别,out可以把方法的值传出去,ref,可以把值传到方法里,又可以把值传到方法外
static void Main(string[] args)
{
//这两行代码不能注释,ref需要在方法外赋值
int number1 = 10;
int number2 = 20;
int sum = Show(ref number1, ref number2);
Console.WriteLine("{0},{1},{2}", number1, number2, sum);
Console.ReadKey();
}
public static int SumNumber(out int num1,out int num2)//out
{
//如果这两行代码注释了的话,不会报错,ref可以在方法外赋值,最终结果是10,20,30;如果不注释,最终结果是100,200,300
num1 = 100;
num2 = 200;
return num1 + num2;
}
总结
这样大家有没有很清楚呢?out必须在方法内赋值,然后把他的值传出去;而ref需要在方法外赋值。