什么是ref?
ref关键字指示按引用传递的值,而非按值传递。
如何做?
如图,这是一个参数没被ref修饰的的交换两个int类型变量值的方法,通过结果可以明显的看出并没有交换成功。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo {
class Program {
static void Main(string[] args) {
//ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
int n1 =10;
int n2=20;
Test(ref n1,ref n2);
Console.WriteLine(n1);
Console.WriteLine(n2);
Console.ReadKey();
}
public static void Test(ref int n1, ref int n2) {
//ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
int temp = n1;
n1 = n2;
n2 = temp;
}
}
}
运行结果:
上例代码,可以看出,在被ref修饰后,两个int类型的变量的值交换成功了。
使用:
在方法上用ref修饰形参,如:
public static void Test(ref int n1, ref int n2) {
//ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
int temp = n1;
n1 = n2;
n2 = temp;
}
在外部调用方法时,修饰实参,如:
Test(ref n1,ref n2);