rdf out传递是变量的内存地址。
class Program
{
static void Main(string[] args)
{
int i = 0;
Console.WriteLine(i);
Pass.value(i);//将i的值(数据)的副本传递给Value方法,Value方法的一切动作都是对其副本的操作,对i没有影响
Console.WriteLine(i);//所以此处输出仍为0
Pass.RefValue(ref i);//将i的内存地址传递给方法RefValue,RefValue方法的一切动作都是对其地址所指向的i的操作,直接影响i的值(内容)
Console.WriteLine(i);//所以此处输出为42
int j;
//Pass.value(j);
Pass.OutValue(out j);//out与ref是一样的,传递的是地址。不同是:变量j可以不做初始化就可以传递j的地址
Console.WriteLine(j);//输出为42
Console.ReadKey();
}
class Pass
{
public static void value(int param)//param接受i传递过来的值0,此时param的值为0
{
param = 42;//将42赋值给param,此时param的值为42
}
public static void RefValue(ref int param)//i的地址传递给param,param指向i的值(内容)
{
param = 42;//对param的赋值实际是对param所指向的i的值的赋值。
}
public static void OutValue(out int param)//传递过来j的地址,所指向的j的内存中什么也没有
{
param = 42;//将42放入param所指向内存中,也就是j中。
}
}
//总结:rdf out传递是变量的内存地址。
}