C# ref与out关键字区别
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
案例:
Ref
static int GetIntResult( ref float avg, ref int max, ref int min)
{
......
}
static void Main(string[] args)
{
int[] arr = { 1,2,3,4,5,6,7,8,9};
float avg=0;//ref参数必须在调用前初始化
int max=0;
int min=0;
int sum = GetIntResult(arr, ref avg, ref max, ref min);
}
Out
static int GetIntResult(int[] arry, out float avg, out int max, out int min)
{
avg=0;
max=0;//out关键字必须在方法内初始化;
min=0;
...
return sum;
}
static void Main(string[] args)
{
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
float avg;//在使用out关键字时,不需要在此处初始化,初始化也不会影响到方法内部的值,所以你初始化没用
int max;
int min;
int sum = GetIntResult(arr, out avg, out max, out min);
Console.WriteLine("和:{0}\t平均值:{1}\t最大值:{2}\t最小值:{3}", sum, avg, max, min);
Console.Read();
}