• 章节:156
  • 访问:1194
  • 时长:00:21:44
  • 日期:2016-10-07 12:33

我们前面所有的函数参数都是值传递到函数中的一个变量,函数中的这个变量的改变不会影响到传进来的参数的值;

比如

static void ShowDouble(int val)
{
    val *=2;
    Console.WriteLine(val.ToString());//输出10
}

调用的时候

int num = 5;

ShowDouble(num)

Console.WriteLine(num.ToString());//输出5

所以函数里面的5乘2了不影响外面传进去的5


如果使用引用参数呢?

像上面的函数参数定义如果加上ref


static void ShowDouble(ref int val)
{
    val *=2;
    Console.WriteLine(val.ToString());//输出10
}

然后我们继续


int num = 5;

ShowDouble(ref num)

Console.WriteLine(num.ToString());//输出10

上面使用ref的话 那么num必须不能是常量 如果不能加const,否则会出错

如const int num = 5;

输出参数out

处理ref 我们还可以使用out

out的使用方式和ref相同

但是有下面的区别

1 把未赋值的变量作用域ref参数是非法的,但可以把未赋值的变量作用out

比如上面的int num = 5; 如果只是int num; 则会错的

2 还有out在函数体里面原本的值会丢失,out的参数在函数体里面是必须赋值?这里待验证

他下面我们来实现一个功能,计算数组中最大值,还有获取最大值的索引号