ref 是引用传递,课参考C#的两个类型,值类型和引用类型,引用传递和值传递。
class Program
{
static void Main(string[] args)
{
int testNum = 100;
Operation(testNum);
//屏幕输出100,表示方法Operation内部对testNum的操作没有影响到testNum的值
Console.WriteLine("testNum的值:"+testNum);
int num1=200;
OtherOpearation(ref num1);
//屏幕输出10000,表示方法OtherOpearation内部对num1的操作影响到了num1值。跟引用类型相同
Console.WriteLine("num1的值:"+num1);
int num2;
//自己去测试结果吧,ref和out的区别我认为就是一个需要初始化,一个不需要。类似这两个方法可以使用ref和out修饰参数在void返回类型的情况下得到你想要的返回值
TheOtherOperation(out num2);
Console.WriteLine("num2的值:"+num2);
}
static void TheOtherOperation(out int result)
{
result = 25000;
}
static void OtherOpearation(ref int result)
{
result = 10000;
}
static void Operation(int result)
{
result = 250;
}
}
使用引用传递
例如:
public void huan(int a,int b)
{
//利用一个变量将a和b的值互换
}
//下面是main程序
{
int x=5;
int y=6;
//想调用huan方法想实现x和y的值互换
//直接调用此方法将x和y当参数传入 无法实现互换(值传递)
// 加上ref后 可以实现互换(引用传递)
}
方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。ref 参数的值被传递到 ref 参数。 传递到 ref 参数的参数必须最先初始化。将此方法与 out 参数相比,后者的参数在传递到 out 参数之前不必显式初始化。 属性不是变量,不能作为 ref 参数传递。