方法: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             }
//MyTryparse

//写一个方法,计算一个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;
//sum,max,min

 

 


 

posted @ 2013-05-25 01:11  -112  阅读(301)  评论(0编辑  收藏  举报