out、 ref 关键字的作用:
一个函数中,使用out 和 ref 作为形参的关键字,那么在函数体中只要修改过这个形参,之前调用这个函数
时赋给对应的形参的也会改变,原因: 使用out ref修饰的形参是引用类型,而不是值类型也就是说他们所存储的是地址而不是值类型。值类型变成了引用类型。
out、ref关键字区别:
out 关键字:1.out表示多余返回值。
2.out修饰的变量,方法内部必须赋值
3.out修饰的参数,传入变量,可以是没有赋值的,因为在方法中必须赋值
4.使用情景:当一个方法中需要多个返回值,如果是相同类型也可以用数组来做,如果是不同类 型的情况,需要out
ref关键字: 1. ref修饰参数,方法内部可以什么也不做,可以不去赋值
2.ref 参数,在传值前,必须是赋值过的,和out相反
总结:out只用来将值从方法中传出,不管传入的什么值,out都会重新赋值,
ref修饰,需要初始值,方法中可以赋值也可不赋值
注意:调用out,ref修饰的参数的时候,传入实际参数的时候,前边也要加上out 或者ref
示例:交换两个数
1 static void Main(string[] args) 2 { 3 4 int num1 = 10; //要先赋值 5 int num2 = 20; 6 Console.WriteLine("num1 = {0},num2 = {1}",num1,num2); 7 Change(ref num1,ref num2); 8 Console.WriteLine("num1 = {0},num2 = {1}", num1, num2); 9 Console.ReadKey(); 10 } 11 12 13 static void Change(ref int a, ref int b) 14 { 15 int temp = a; 16 a = b; 17 b = temp; 18 }
out示例:
1 static void Main(string[] args) 2 { 3 int num1 ; 4 Test( out num1); //out 修饰, num1可以不赋值 5 Console.WriteLine("num1 = {0}",num1); 6 } 7 8 9 10 public static void Test(out int a) 11 { 12 a = 10; 13 }