1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 方法002 8 { 9 class Program10 { 11 //写一个方法 求一个数组中的最大值、最小值、总和、平均值12 //将返回的4个值,放在一个数组中返回13 static void Main(string[] args)14 {15 int[] numbs = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };16 int[] reslut = GetMaxMinSumAvg(numbs);17 Console.WriteLine("输入数组的最大值是{0},最小值是{1},总和是{2},平均值是{3}",reslut[0], reslut[1], reslut[2], reslut[3]);18 Console.ReadKey();19 }20 ///21 /// 计算一个数组的最大值、最小值、总和、平均值22 /// 23 /// 要计算的数组24 ///最大值、最小值、总和、平均值形成的数组 25 public static int[] GetMaxMinSumAvg(int[] numbers)26 {27 // 假设res[0]是最大值,res[1]是最小值,res[0]是总和,res[0]是平均值28 int[] res = new int[4];29 res[0] = numbers[0];//Max30 res[1] = numbers[0];//Min31 res[2] = 0;32 for (int i = 0; i < numbers.Length; i++)33 {34 //如果当前循环到的元素比我假定的最大值还大35 if (res[0]
(1)out 参数
如果在一个方法中,需要返回多个相同类型的值的时候,考虑使用数组。
但是如果在一个方法中,需要返回多个不同类型的值的时候,就得考虑使用out参数。
out参数:侧重于在一个方法中,可以返回多个不同类型的值。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 方法002 8 { 9 class Program10 { 11 //写一个方法 求一个数组中的最大值、最小值、总和、平均值12 //将返回的4个值,放在一个数组中返回13 static void Main(string[] args)14 {15 int min1 = 0;16 int max1 = 0;17 int sum1 = 0;18 int avg1= 0;19 int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };20 Test(numbers,out max1,out min1,out sum1,out avg1);21 Console.WriteLine(max1);22 Console.WriteLine(min1);23 Console.WriteLine(sum1);24 Console.WriteLine(avg1);25 Console.ReadKey();26 }27 ///28 /// 用out参数形式来计算一个数组的最大值、最小值、总和、平均值29 /// 30 /// 要求值的数组31 /// 多余返回的最大值32 /// 多余返回的最小值33 /// 多余返回的总和34 /// 多余返回的平均值35 public static void Test(int[] numbs,out int max,out int min,out int sum,out int avg)36 {37 //out 参数要求在方法的内部必须为其赋值38 max = 0;39 min = 0;40 sum = 0;41 for (int i = 0; i < numbs.Length; i++)42 {43 if (numbs[i]>max)44 {45 max = numbs[i];46 }47 if (numbs[i]
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 方法002 8 { 9 class Program10 {11 //分别提示用户输入用户名和密码12 //写一个方法来判断用户输入的是否正确13 //换回给用户一个登陆结果,并且还要单独的返回给用户一个登陆信息14 //如果用户名错误,除了返回登陆结果以外,还要返回一个“用户名错误”15 //密码错误16 static void Main(string[] args)17 {18 Console.WriteLine("请输入用户名:");19 string _name = Console.ReadLine();20 Console.WriteLine("请输入密码:");21 string _pwd = Console.ReadLine();22 string _msg;23 bool b=IsBool(_name,_pwd,out _msg);24 Console.WriteLine("登陆结果:{0}",b);25 Console.WriteLine("登陆信息:{0}",_msg);26 Console.ReadKey();27 }28 ///29 /// 判断登陆是否成功30 /// 31 /// 用户名32 /// 密码33 /// 多余返回的登陆信息34 ///返回登陆结果 35 public static bool IsBool(string name, string pwd, out string msg)36 {37 if (name == "admin" && pwd == "888888")38 {39 msg = "登陆成功";40 return true;41 }42 else if (name == "admin")43 {44 msg = "密码错误";45 return false;46 }47 else if (pwd == "888888")48 {49 msg = "您输入的用户名不存在";50 return false;51 }52 else53 {54 msg = "用户名/密码错误";55 return false;56 }57 }58 }59 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 方法002 8 { 9 class Program10 {11 //分别提示用户输入用户名和密码12 //写一个方法来判断用户输入的是否正确13 //换回给用户一个登陆结果,并且还要单独的返回给用户一个登陆信息14 //如果用户名错误,除了返回登陆结果以外,还要返回一个“用户名错误”15 //密码错误16 static void Main(string[] args)17 {18 int num;19 bool b = int.TryParse("123",out num);20 Console.WriteLine(b);21 Console.WriteLine(num);22 Console.ReadKey();23 }24 public static bool MyTryParse(string s,out int result)25 {26 27 result = 0;28 try29 {30 result = Convert.ToInt32(s);31 return true;32 }33 catch34 {35 return false;36 }37 }38 }39 }
(2)ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法。ref参数要求在方法外部必须为其赋值,而方法内部可以不赋值。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 方法002 8 { 9 class Program10 {11 static void Main(string[] args)12 {13 double salary = 5000;14 double _mysalary= JiangJin(salary);15 Console.WriteLine(_mysalary);16 Console.ReadKey();17 }18 public static double JiangJin(double numbs)19 {20 numbs += 500;21 return numbs;22 }23 }24 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 方法002 8 { 9 class Program10 {11 static void Main(string[] args)12 {13 double salary = 5000;14 JiangJin(ref salary);15 Console.WriteLine(salary);16 Console.ReadKey();17 }18 public static void JiangJin(ref double numbs)19 {20 numbs += 500; 21 }22 }23 }
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 方法002{ class Program { //两种交换变量的方法 static void Main(string[] args) { int _n1 = 10; int _n2 = 20; //int temp = n1; //n1 = n2; //n2 = temp; //Console.WriteLine(n1); //Console.WriteLine(n2); //Console.ReadKey(); //int n1 = 10; //int n2 = 20; //n1 = n1 - n2; //n2 = n1 + n2; //n1 = n2 - n1; Test(ref _n1,ref _n2); Console.WriteLine(_n1); Console.WriteLine(_n2); Console.ReadKey(); } public static void Test(ref int n1,ref int n2) { int temp = n1; n1 = n2; n2 = temp; } }}
(3)params参数
当实参列表中跟可变参数数组类型一致的元素都当作数组的元素去处理。
注:参数数组必须是形参列表中的最后一个参数。 即:parmas可变参数必须是形参列表中的最后一个参数。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 方法002 8 { 9 class Program10 {11 12 static void Main(string[] args)13 {14 15 Test("张三",99,88,20);16 Console.ReadKey();17 }18 public static void Test(string name,params int[] score)19 {20 int sum = 0;21 for (int i = 0; i < score.Length; i++)22 {23 sum += score[i];24 }25 Console.WriteLine("{0}这次的考试总成绩是{1}",name,sum);26 }27 }28 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 方法002 8 { 9 class Program10 {11 //求任意长度数组的和(整数类型的)12 static void Main(string[] args)13 {14 //int[] numbers = { 0, 1, 2, 3, 45, 5, 6 };15 int sum = GetSum(6,5,5,41,5,515);16 Console.WriteLine(sum);17 Console.ReadKey();18 }19 public static int GetSum(params int[] num)20 {21 int sum = 0;22 for (int i = 0; i < num.Length; i++)23 {24 sum += num[i];25 }26 return sum;27 }28 }29 }