相同点:
都是对于方法而言,使参数按引用传递
都要在实参和形参前加关键字(ref/out)
不同点:
ref有进有出:ref必须在方法使用前初始化参数
out只出不进:out必须在方法内部初始化参数
测试:
static void Main(string[] args)
{
int i = 0;
Console.WriteLine(i);
Ref_Out_Test(i);
Console.WriteLine(i);
Console.ReadKey();
}
static void Ref_Out_Test(int i)
{
i++;
}
//输出为
0
0
ref:
static void Main(string[] args)
{
//int i; //报错
int i = 0;
Console.WriteLine(i);
Ref_Out_Test(ref i);
Console.WriteLine(i);
Console.ReadKey();
}
static void Ref_Out_Test(ref int i)
{
i++;
}
//0 1
out:
static void Main(string[] args)
{
//int i; //报错
int i = 0;
Console.WriteLine(i);
Ref_Out_Test(out i);
Console.WriteLine(i);
Console.ReadKey();
}
static void Ref_Out_Test(out int i)
{
i = 1;
i++;
}
// 0 2