普通参数是"值类型传递值,引用类型传递引用",但是都不能在函数内部修改外部变量的指向。这个使用就要使用ref或者使用out关键字。
他们作用不同:
ref:方法内部修改外部变量的引用
out:方法内部给外部变量初始化,相当于一个函数可以有多个返回值
1.使用ref型参数时,必须在函数外部进行初始化,方法中可以不用进行赋值,而对于out而言:必须在方法内部给变量完成初始化, 方法外部初始化也没有用。
2.使用ref和out时,在方法的参数和执行方法时,都要加ref或out关键字,以满足匹配。
3.out适用与需要方法多个返回值的地方,而ref则用在需要被调用的方法修改调用调用者的引用的时候
在编译器中试试上面的错误呢?
1.ref参数在外部没有进行初始化
2.方法在调用的时候没有加ref关键字
3.out在外部初始化,在内部没有初始化
4.在内部对out变量进行初始化,在外部函数调用时不使用out关键字
下面我们来做一个小例子来熟悉下ref和out的使用
public static int Template(ref int i, ref int j, out int k)
{
j = j - i;
i = i + j;
j = i - j;
k = j;
return i;
}
static void Main(string[] args)
{
//int i=0;
//Test(ref i);
//int j = 0;
//Test2(out j);
int i = 1;
int j = 2;
int k;
int result = Template(ref i, ref j, out k);
Console.WriteLine(string.Format("i={0},j={1},k={2},返回值={3}",i,j,k,result));
Console.ReadKey();
}
在上面i和j都有ref修饰,k有out修饰,方法带有返回值,返回一个int整数。
---本博客是学习以后记录知识,如有侵权,请联系删除!!!