C#入门经典之摘引参数使用ref关键字
C#入门经典之引用参数使用ref关键字
内容摘自<C#入门经典>
代码如下:
class Program { static void Main(string[] args) { int myNumber = 5; Console.WriteLine("myNumber = {0}", myNumber); ShowDouble(ref myNumber); Console.WriteLine("myNumber = {0}", myNumber); Console.ReadKey(); } static void ShowDouble(ref int val) { val *= 2; Console.WriteLine("val doubled = {0}", val); } }
输出:
myNumber = 5 val doubled = 10 myNumber = 10
PS:
可以通过“引用”传递参数。即函数处理的变量与函数调用中使用的变量相同,而不仅仅
是值相同的变量。因此,对这个变量进行的任何改变都会影响用作参数的变量值。为此,只需使用
ref关键字指定参数.
用作ref 参数的变量有两个限制。首先,函数可能会改变引用参数的值,所以必须在函数调用
中使用“非常量”变量。所以,下面的代码是非法的:
const int myNumber = 5; Console.WriteLine("myNumber = {0}", myNumber); ShowDouble(ref myNumber); Console.WriteLine("myNumber = {0}", myNumber);
其次,必须使用初始化过的变量。C#不允许假定ref 参数在使用它的函数中初始化,下面的代
码也是非法的:
int myNumber; ShowDouble(ref myNumber); Console.WriteLine("myNumber = {0}", myNumber);