先看看没有学ref之前我们是怎么传参的?举例:一个人薪资是5000,有奖金跟罚款两个方法

class Program{    static void Main(string[] args)    {        double salary = 5000;        JiangJin(salary);        Console.WriteLine(salary); //  打印出5500    }    public static double JiangJin(double s)    {        s += 500;        return s;    }    public static double FaKuan(double s)    {        s -= 500;        return s;    }

那么,有没有这样一种方式,帮助我们在方法里面去改变一个变量,而外面也跟着改变。有,当然有,就是ref

class Program{    static void Main(string[] args)    {        double salary = 5000;        JiangJin(ref salary);        Console.WriteLine(salary); //  这边就自动打印出5500    }    public static void JiangJin(ref double s)    {        s += 500;    }    public static void FaKuan(ref double s)    {        s -= 500;    }}

需求:使用方法来交换两个int类型的变量。

第一种方式:声明第三个变量

int n1 = 10;int n2 = 20;int temp = n1;
n2 = temp;

第二种方式:减加减

int n1 = 10;int n2 = 20;n1 = n1 - n2;  // 得到n1为-10, n2为20n2 = n1 + n2; // 得到n1为-10,n2为10n1 = n2 - n1;// 得到n1为20,n2为10

第三种方式:方法

public static void Test(ref int n1,ref int n2){  int temp = n1;   n1 = n2;   n2 =temp;}// 调用Test(ref n1, ref n2);

总结:

ref参数能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法。ref参数要求在方法外必须为其赋值,而方法内可以不赋值。