C#高级参数 out ref params
一、out参数
作用:在一个方法的内部返回多个不同类型的值;
在方法的返回值中,我们只可以返回一个值;当我们想让方法返回多个值时,可以采用数组,用数组返回;但是数组只能返回多个相同类型的值;所以当我们需要用方法返回多个不同类型的值时,用到out参数;
注意:out参数在使用时,必须在方法内先进行赋值
1 namespace out参数 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 8 int max; 9 int min; 10 int sum; 11 int avg; 12 string a; 13 bool b; 14 GetNumber(nums, out max, out min, out sum, out avg, out a, out b); 15 Console.WriteLine(max); 16 Console.WriteLine(min); 17 Console.WriteLine(sum); 18 Console.WriteLine(avg); 19 Console.WriteLine(a); 20 Console.WriteLine(b); 21 Console.ReadLine(); 22 } 23 /// <summary> 24 /// 计算一个数组的最大值,最小值,总和,平均值 25 /// </summary> 26 /// <param name="nums">要求值的数组</param> 27 /// <param name="max">多余返回的最大值</param> 28 /// <param name="min">多余返回的最小值</param> 29 /// <param name="sum">多余返回的总和</param> 30 /// <param name="avg">多余返回的平均值</param> 31 /// <param name="a">多于返回的字符串</param> 32 /// <param name="b">多余返回的布尔值</param> 33 public static void GetNumber(int[] nums,out int max,out int min ,out int sum,out int avg,out string a,out bool b) 34 { 35 //out参数在使用时,必须先对参数进行赋值; 36 max = nums[0]; 37 min = nums[0]; 38 sum = 0; 39 avg = 0; 40 a = "abc"; 41 b = true; 42 for(int i = 0; i < nums.Length; i++) 43 { 44 if (nums[i] > max) 45 { 46 max = nums[i]; 47 } 48 if (nums[i] < min) 49 { 50 min = nums[i]; 51 } 52 sum += nums[i]; 53 } 54 avg = sum / nums.Length; 55 56 } 57 } 58 }
二、ref参数
能够将一个参数带入方法中进行改变,改变完成之后,再讲这个值带出方法;
注意:ref参数要求必须在方法外进行赋值,而方法内可以不用赋值
1 namespace complex1 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 int salary = 5000; 8 JiangJin(ref salary); 9 Console.WriteLine( salary); 10 Console.ReadKey(); 11 12 } 13 public static void JiangJin(ref int s) 14 { 15 s += 500; 16 } 17 public static void FaKuang(int s) 18 { 19 s -= 500; 20 } 21 } 22 }
三、params参数
将实参列表中与可变参数数组一致的元素都当作数组额元素去处理
params可变参数必须是形参列表中的最后一个元素
1 namespace params练习 2 { 3 class Program 4 {//计算任意多个数的和; 5 static void Main(string[] args) 6 { 7 int sum = Sum(5, 2, 5, 7); 8 Console.WriteLine(sum); 9 10 Console.ReadKey(); 11 } 12 public static int Sum(params int[] num) 13 { 14 int sum = 0; 15 for (int i = 0; i < num.Length; i++) 16 { 17 sum += num[i]; 18 } 19 return sum; 20 } 21 22 } 23 }