方法:Out参数和Ref参数
//定义同名方法时,参数一定要不同,编译器才能根据我们的参数不同自动给我们选择相匹配的方法,这样就叫做方法重载
方法重载和返回值没有关系
1 static void Main(string[] args) 2 { 3 double m = Max(10, 20); 4 } 5 public static int Max(int i1, int i2) 6 { 7 if (i1 > i2) 8 { 9 return i1; 10 } 11 else 12 { 13 return i2; 14 } 15 } 16 public static double Max(double i1, double i2) 17 { 18 if (i1 > i2) 19 { 20 return i1; 21 } 22 else 23 { 24 return i2; 25 } 26 }
1 //int number; 2 //int result = Test(out number);//通过参数返值 3 4 //Console.WriteLine("number={0},result={1}", number, result); 5 string s = "123"; 6 //int result = int.Parse(s); 7 int re; 8 if (int.TryParse(s, out re) == true) 9 { 10 Console.WriteLine("能转换成功,转换后的数为:" + re); 11 } 12 else 13 { 14 Console.WriteLine("转换失败"); 15 } 16 Console.ReadKey(); 17 } 18 static int Test(out int a)//通过参数返值 19 { 20 a = 20; //a是一个返值的参数,必须要给a赋值 因为a是由out修饰的 21 return a; 22 }
如上代码:
实现步骤:
1)在方法的参数类型前加out,那么传参数的时候,也必须在number前加 out表明这个参数不是传入的,而是用来传出值的
2)如果参数是以out形式传入的那么在传入前可以不赋初值
3)在方法中对于由out修饰的参数,必须赋值,并且必须在使用前赋值
-------------------------------------------------------------------------------------------
//写一个方法,实现MyTryParse方法,
要求用户输入一个字符串,如果这个字符串能转换成int 类型,则方法返回true,并且转换后的int 类型数据通过方法的参数传出。如果字符串不能转换成int类型,则方法返回fasle,那么out传出的参数将没有意义,在方法中随意赋个值就行了。
1 string s = "123"; 2 int re; 3 if (IntTryParse(s, out re)) 4 { 5 Console.WriteLine("转换成功!" + re); 6 } 7 else 8 { 9 Console.WriteLine("转换失败!"); 10 } 11 Console.ReadKey(); 12 } 13 static bool IntTryParse(string s, out int result) 14 { 15 result = 0; 16 try 17 { 18 result = Convert.ToInt32(s); 19 return true; 20 } 21 catch 22 { 23 24 return false; 25 }
//写一个方法,计算一个int类型数组中每个元素的总和 和 最大值与最小值
1 int[] nums = { 3, 4, 2, 5, 1, 6 }; 2 int max, min, sum;//定义三个变量,最大值 最小值总和 3 sum = compute(nums, out max, out min);//调用方法并且通过out返值 4 Console.WriteLine("数组的和为:{0} 最大值为:{1} 最小值为:{2}", sum, max, min); 5 Console.ReadKey(); 6 7 } 8 static int compute(int[] numbers, out int max, out int min) 9 //定义三个参数,分别为传入的数组,传出的最大值,最小值 10 { 11 int sum = 0; 12 max = numbers[0];//假设第一个元素就是最大值 13 min = numbers[0];//假设第一个元素就是最小值 14 15 for (int i = 0; i < numbers.Length; i++) 16 { 17 sum += numbers[i]; 18 19 if (numbers[i] > max)//比较max这个元素是否比number这个元素大 20 { 21 max = numbers[i];//如果比这个大,就存到max中 22 } 23 if (numbers[i] < min)//比较min这个元素是否比number这个元素小 24 { 25 min = numbers[i];//如果比这个小,就存到min中 26 } 27 } 28 return sum;