C#中out参数、ref参数与值参数的用法及区别

2020-01-05 09:26:12王冬梅

把num作为参数,调用ShowDouble()并不影响Mian()中num的值,即使把num值加倍之后再赋值给num,在函数调用完之后num的值还是不会变。

这也没什么问题。

但是如果我们想改变num的值呢?我们会想到使用为num返回新值的函数:


 static int DoubleNum(int num)
 {
  num = num * 2;
  return num;
 }

然后调用:


  int num = 5;
  Console.WriteLine("num={0}", num);
  num = DoubleNum(num);
  Console.WriteLine("num={0}", num);

这段代码不是很直观,且不能改变用作参数的多个变量值(因为函数只有一个返回值)。这个时候我们可以想到引用参数,即函数处理的变量和函数调用的变量相同,而不仅仅是值相同的变量。因此对这个变量的任何改变都会影响用作参数的变量值。为此,我们使用ref关键词指定参数。

ref参数


  int num = 5;
  Console.WriteLine("num={0}", num);
  ShowDouble(ref num);
  Console.WriteLine("num={0}", num);

运行控制台结果如下: