c# ref与out的区别
相同点:都是输出参数
不同点:
ref:
1、必须初始化,即:必须赋初始值;
2.有进有出;
3、用在需要被调用的方法修改调用者的引用的时候。
4、是传递参数的地址
out:
1.不需要初始化,即:不需要赋初始值;
2、只出不进;
3、用在需要retrun多个返回值的地方;
4、返回值;
通过代码更直观的看出它们的区别:
ref:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //num1,num2,必须赋值 6 int num1 = 10; 7 int num2 = 5; 8 Exchage(ref num1,ref num2);//调用方法,必须在变量前,必须加ref关键字 9 10 } 11 /// <summary> 12 /// 使用ref方法,参数必须加ref关键字 13 /// </summary> 14 /// <param name="num1"></param> 15 /// <param name="num2"></param> 16 private static void Exchage(ref int num1,ref int num2) 17 { 18 //交换前 19 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2); 20 int temp = num1; 21 num1 = num2; 22 num2 = temp; 23 //交换后 24 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2); 25 Console.ReadKey(); 26 }
out:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 int sum;//不需赋值,即使赋值,也会被覆盖 6 NumSum(10,5,out sum); 7 Console.Write(sum); 8 Console.ReadKey(); 9 } 10 /// <summary> 11 /// 求和 12 /// </summary> 13 /// <param name="num1"></param> 14 /// <param name="num2"></param> 15 /// <param name="sum"></param> 16 private static void NumSum(int num1,int num2,out int sum) 17 { 18 sum = num1 + num2; 19 20 } 21 }