C# 参数传递、引用传递的一些个人理解
2013-07-30 17:09:26
1 using System; 2 class Program 3 { 4 static void Swap(int a,int b) { int t=a;a=b;b=t; } 5 static void Main() { int a=3,b=5; Swap(a,b); Console.WriteLine("a={0} b={1}",a,b); } 6 } 7 改成引用传递后: 8 using System; 9 class Program 10 { 11 static void Swap(ref int a,ref int b) { int t=a;a=b;b=t; } 12 static void Main() { int a=3,b=5; Swap(ref a,ref b); Console.WriteLine("a={0} b={1}",a,b); } 13 }
1-6行的代码:第5行的代码定义了a,b两个实际参数,当调用Swap(a,b)方法,方法中的参数a,b是,实际参数的值的副本,方法中的a,b值转换只是原来参数的副本,在方法外原参数未改变,基本数据类型默认是值传递的。
7-12行的代码:Swap(ref int a,ref int b)方法中的ref关键字所定义的参数a,b是引用类型传递了,方法中的值转换,不再是副本,因此转换后,在方法外参数也发生变化了.