out,ref都相当于C语言里的传地址,而非传值
在C#里,所有的变量必须先初始化再使用。而使用out关键字,可以不先初始化变量而传递给方法。如:
//使用out关键字的方法
public void Print1(out int a)
{
a = 3;
Console.Write(a);
}//使用ref关键字的方法
public void Print2(ref int a)
{
Console.Write(a);
}
public int a;
a = 3; //这里必须将a初始化
print1(ref a);public int b;
print2(out b); //这里可以不将a初始化而传递给方法
在C#里,所有的变量必须先初始化再使用。而使用out关键字,可以不先初始化变量而传递给方法。如:
//使用out关键字的方法
public void Print1(out int a)
{
a = 3;
Console.Write(a);
}//使用ref关键字的方法
public void Print2(ref int a)
{
Console.Write(a);
}
public int a;
a = 3; //这里必须将a初始化
print1(ref a);public int b;
print2(out b); //这里可以不将a初始化而传递给方法
public class Test
{
static void GetA(out int i)
{
i = 10;
}
static void GetB(ref int i)
{
i = 11;
}
static void Main()
{
int a = 1;
int b;
GetA(out b);
GetB(ref a);
System.Console.WriteLine("a={0},b={1}",a,b);
}
}程序运行结果:a=11,b=10