方法综合练习:outparamsref
Posted 五月的胡歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方法综合练习:outparamsref相关的知识,希望对你有一定的参考价值。
using System; namespace ConsoleApp1 { class Program { /// <summary> /// 求两个参数之间的最大值 /// </summary> /// <param name="n1">第一个值</param> /// <param name="n2">第二个值</param> /// <returns></returns> public static int GetMax(int n1, int n2)//这里的你n1和n2是形参,形式上的参数 { int max = n1 > n2 ? n1 : n2; return max; } static void Main(string[] args) { int a1 = 22; int a2 = 33; int max=GetMax(a1, a2);//这里的a1,a2是实参,实际上存在的参数 不管是形参还是实参,都是在内存中开辟了空间的 Console.WriteLine(max); Console.ReadKey(); } } }
using System; namespace ConsoleApp2 { class Program //读取输入的整数,定义成方法,多次调用,如果用户输入的是数字则返回,否则提示用户输入错误 //注意:方法的功能一定要单一,最忌讳的就是提示用户输入的字眼 { //public static void Number(string number) //{ // while (true) // { // Console.WriteLine("请输入一个数字,我们将它返回"); // try // { // int n = Convert.ToInt32(Console.ReadLine()); // Console.WriteLine(n); // break; // } // catch // { // Console.WriteLine("请您重新输入"); // } // } //} static void Main(string[] args) { Console.WriteLine("请输入一个数字"); string input = Console.ReadLine(); int number = GetNumber(input); Console.WriteLine(number); } /// <summary> /// 接收用户输入的一个整数并把它输出,如果输入的不是整数则显示重新输入 /// </summary> /// <param name="s">接收用户输入的一个值 </param> /// <returns></returns> public static int GetNumber(string s ) { while (true) { try { int number = Convert.ToInt32(s); return number; } catch { Console.WriteLine("请重新输入"); s = Console.ReadLine(); } } } } }
using System; namespace ConsoleApp3 { class Program { /// <summary> /// 计算一个数组的总和 /// </summary> /// <param name="nums">给定数组</param> /// <returns>返回一个总和的值</returns> public static int GetSum(int[] nums ) { int sum = 0; for (int i = 0; i < nums.Length ; i++) { sum += nums[i]; } return sum; } static void Main(string[] args) { //定义一个方法,计算一个数组的总和 int[] num = { 1, 2, 4, 5, 3, 6, 7, 8, 9 }; int sums = GetSum(num); Console.WriteLine(sums); Console.ReadKey(); } } }
out参数的使用
using System; namespace out参数的使用 { class Program { static void Main(string[] args) { ///out 参数 ///如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组 ///但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候我们可以考虑使用out参数 ///out参数侧重于在一个方法中可以返回多个不同类型的值 int[] numbers = { 12, 4, 5, 63, 78, 99, 4, 5, 6 }; int max1;//这里不需要赋值是因为在方法里已经赋值过,这里传参之后,参数等同于方法里面的已经赋值的参数 int min1; int sum1; int avg1; string s1; bool b1; Avg(numbers, out max1, out min1, out sum1, out avg1, out s1, out b1); //参数不一定要跟方法里面的一样,只需要方法里面对应位置一样就行,这里是传递参数 Console.WriteLine(max1); Console.WriteLine(min1); Console.WriteLine(sum1); Console.WriteLine(avg1); Console.WriteLine(s1); Console.WriteLine(b1); Console.ReadKey(); } /// <summary> /// 建立一个方法,返回一个数组的最大值最小值总和以及平均值 /// </summary> /// <param name="num">要求值的数组</param> /// <param name="max">最大值</param> /// <param name="min">最小值</param> /// <param name="sum">总和</param> /// <param name="avg">平均值</param> /// <param name="s">字符串</param> /// <param name="b">bool值</param> public static void Avg(int[] num, out int max, out int min, out int sum, out int avg, out string s, out bool b)//注意这里没有设定返回值 { //out参数要求方法的内部必须为其赋值 max = num[0]; min = num[0]; sum = num[0]; avg = num[0]; s = "123"; b = true; for (int i = 0; i < num.Length; i++) { if (num[i] > max) { max = num[i]; } if (num[i] < min) { min = num[i]; } sum += num[i]; } avg = sum / num.Length; } } }
out参数小练习
using System; namespace out参数小练习 { class Program { ///题目:分别提示用户输入用户名以及密码 ///你写一个方法来判断用户输入的是否正确 ///返回给用户一个登录结果,并且还要单独的返回给用户一个登陆信息 ///如果用户名错误,除了返回登录结果之外,还有返回一个用户名错误,密码错误 static void Main(string[] args) { Console.WriteLine("请输入用户名"); string username = Console.ReadLine(); Console.WriteLine("请输入密码"); string userpassword = Console.ReadLine(); string s; bool b = IsLogin(username, userpassword, out s); Console.WriteLine(b); Console.WriteLine(s); Console.ReadKey(); } /// <summary> /// 提示输入用户名跟密码,返回一个登陆结果加一个登陆信息 /// </summary> /// <param name="name">输入的用户名</param> /// <param name="password">输入的密码</param> /// <param name="message">返回的登陆信息</param> /// <returns></returns> public static bool IsLogin(string name,string password,out string message) { if (name == "admin" && password == "88888888") { message = "登陆成功"; return true; } else if (name == "admin") { message = "登陆失败,密码错误"; return false; } else if (password == "88888888") { message = "登陆失败,用户名错误"; return false; } else { message = "登陆失败,用户名跟密码都错了"; return false; } } } }
params可变参数
using System; namespace params可变参数 { class Program { ///params可变参数 ///将实参列表中跟可变参数数组类型一致的元素都当作数组的元素去处理 ///params可变参数必须是形参列表中的最后一个元素,如果它后面还跟其他元素,那它将无法识别最后那个参数是什么 ///一个参数列表中只能用一个params可变参数,理由还是必须在最后面的元素 static void Main(string[] args) { Test("张三", 99, 88, 77, 66, 44, 33, 22, 11); Console.ReadKey (); } public static void Test(string name,params int[] score) { int sum = 0; for (int i = 0; i < score.Length ; i++) { sum += score[i]; } Console.WriteLine("{0}这次考试的总成绩{1}", name, sum); } } }
using System; namespace params参数的使用练习 { class Program { static void Main(string[] args) { //求任意长度数组的和,整数类型的 int sums = GetSum(1, 2, 3, 4, 5, 6, 7, 8, 9); Console.WriteLine(sums); Console.ReadKey(); } public static int GetSum(params int[] nums) { int sum = 0; for (int i = 0; i < nums.Length; i++) { sum += nums[i]; } return sum; } } }
ref参数
using System; namespace ref参数的使用 { class Program { static void Main(string[] args) { //ref参数是将变量以参数的形式传递到方法中,变换完成之后再把改变后的值传递出来 //ref参数要求在方法外必须为其赋值,而方法内可以不赋值。因为有值之后才可以在方法内改变 int n1 = 10; int n2 = 20; Change(ref n1, ref n2); Console.WriteLine(n1); Console.WriteLine(n2); Console.ReadKey(); } public static void Change(ref int n1,ref int n2) { int temp = n1; n1 = n2; n2 = temp; } } }
方法的递归
using System; namespace 方法的递归 { class Program { static void Main(string[] args) { ///方法的递归就是重复不停的自我调用,在达到某种条件后结束 ///每调用一次,相当于进一个门,用return来跳出方法的时候只能跳出当前的这个门 ///如果调用了10次,那么跳出的话也要执行10次,才可以真正跳出程序 TellStory(); Console.ReadKey (); } public static int i = 0;//声明一个静态字段,在哪里都能用的那种 public static void TellStory() { Console.WriteLine("从前有座山"); Console.WriteLine("山里有座庙"); Console.WriteLine("庙里有个老和尚和小和尚,老和尚讲故事给小和尚听,讲什么呢?"); i++; if(i>=10) { return; } TellStory(); } } }
方法的调用
using System; namespace 方法的调用 { class Program { static void Main(string[] args) { //在一个函数中调用另外一个函数,称为调用者和被调用者 ///如果被调用者想要得到调用者的值 ///1、传递参数 ///2、使用静态字段来模拟全局变量 ///如果调用者想要得到被调用者的值: ///返回值 bool b = IsRun(2000); Console.WriteLine(b); } /// <summary> /// 判断所给参数是否为闰年 /// </summary> /// <param name="year"></param> /// <returns></returns> public static bool IsRun(int year) { bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); return b; } } }
方法的重载
using System; namespace 方法的重载 { class Program { static void Main(string[] args) { //方法的重载 ///方法的重载指的就是方法的名称相同,参数不同 ///1、如果参数的个数相同,那么参数的类型就不能相同 ///2、如果参数的类型相同,那么参数的个数就不能相同 ///***方法的重载跟返回值没有关系 Console.WriteLine("Hello World!"); } public static void M1(int n1, int n2) { int result = n1 + n2; } public static double M1(int n1,int n2,int n3) { n3 = n1 + n2; return n3; } public static string M1(string n1,string n2) { return n1 + n2; } } }
方法的综合练习
using System; namespace 方法的综合练习 { class Program { static void Main(string[] args) { ///用方法实现,有一个字符串数组: ///{“马龙”,“迈克尔乔丹”,“雷吉米勒”,“蒂姆邓肯”,“科比布莱恩特”} string[] names = { "马龙", "迈克尔乔丹", "雷吉米勒", }; Console.WriteLine("Hello World!"); } } }
以上是关于方法综合练习:outparamsref的主要内容,如果未能解决你的问题,请参考以下文章