标签:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Program pg = new Program(); 6 int x = 10; 7 int y = 20; 8 pg.GetValue(ref x, ref y); 9 Console.WriteLine("x={0},y={1}", x, y); 10 11 Console.ReadLine(); 12 13 } 14 15 public void GetValue(ref int x, ref int y) 16 { 17 x = 521; 18 y = 520; 19 } 20 }
:
代码②:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Program pg = new Program(); 6 int x = 10; 7 int y = 20; 8 pg.GetValue(ref x, ref y); 9 Console.WriteLine("x={0},y={1}", x, y); 10 11 Console.ReadLine(); 12 13 } 14 15 public void GetValue(ref int x, ref int y) 16 { 17 x = 1000; 18 y = 1; 19 } 20 }
由代码① 和②的运行结果可以看出,在方法中对参数所做的任何更改都将反映在该变量中,而在main函数中对参数的赋值却没有起到作用,这是不是说明不需要进行初始化呢?来看第二点
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Program pg = new Program(); 6 int x; 7 int y; //此处x,y没有进行初始化,则编译不通过。 8 pg.GetValue(ref x, ref y); 9 Console.WriteLine("x={0},y={1}", x, y); 10 11 Console.ReadLine(); 12 13 } 14 15 public void GetValue(ref int x, ref int y) 16 { 17 x = 1000; 18 y = 1; 19 } 20 }
出现的错误为:使用了未赋值的局部变量“x”,“y”。故可以说明ref指定的参数无论在函数定义的时候有没有赋予初值,在使用的时候必须初始化。
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Program pg = new Program(); 6 int x=10; 7 int y=233; 8 pg.Swap(out x, out y); 9 Console.WriteLine("x={0},y={1}", x, y); 10 11 Console.ReadLine(); 12 13 } 14 15 public void Swap(out int a,out int b) 16 { 17 18 int temp = a; //a,b在函数内部没有赋初值,则出现错误。 19 a = b; 20 b = temp; 21 } 22 23 }
标签:
原文地址:http://www.cnblogs.com/hongmaju/p/4642461.html