看视频的时候发现关于out和ref之间感觉有点儿乱,两者都是用来传值的,使用后可以改变原来参数的值,但是传值的过程感觉不是很明白,现在整理一下:
代码①:
static void Main(string[] args)
{
int number1 ;//可以不赋值
int number2 = 90;
int sum = AddNumber (out number1, number2);
Console.WriteLine(number1 );
Console.WriteLine(number2);
Console.WriteLine(sum);
Console.ReadKey();
}
public static int AddNumber(out int num1, int num2)
{
num1 = 100;//必须赋值
num2 = 200;
return num1 +num2 ;
}
}
}
运行结果:
代码②:
static void Main(string[] args)
{
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 show(ref int num1, ref int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;
}
}
}
运行结果:
【总结】
方法的参数用out修饰了,那么这个参数必须在方法里进行赋值,在方法外面可以不给这个参数赋值;
如果使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字;
通过对比可以发现ref用的时候必须要给这个变量赋初值,这是和out的区别,out可以把方法里的值传出去,而ref可以把值传到方法里又可以把值传到方法外;