C#中引用传递
static void showDouble(ref int val)
{
val *= 2;
Console.WriteLine("val doubled = {0}",val);
}
//调用过程
int myNumber = 5;
Console.WriteLine("myNumber = {0}", myNumber);
showDouble(ref myNumber);
Console.WriteLine("myNumber = {0}", myNumber);
//输出结果
myNumber = 5
val doubled = 10
myNumber = 10
值传递的函数并没有改变传入函数的变量的值,只是在函数中把传入变量当做一个普通的值进行操作,或返回一个操作完后的值,而引用传递则是直接修改了传入变量的值,由上例可见,声明函数和调用函数的时候只要在值前加上ref关键字,系统就识别为引用传递,类似C中的指针
需要注意的有,引用传递的函数中,被函数调用中必须使用变量,不能使用常量,且使用的变量必须是被初始化过的变量
使用
const int myNumber = 5;
或
int myNumber;
都是非法的