七、方法
1、我们在Main()函数中,调用Test()函数,我们管Main()函数称之为调用者,
管Test()函数称之为被调用者。
如果被调用者想要得到调用者的值:
1)、传递参数。
2)、使用静态字段来模拟全局变量。
public static int _number = 10;
如果调用者想要得到被调用者的值:
1)、返回值
2、
不管是实参还是形参,都是在内存中开辟了空间的。
namespace 方法概念 { class Program { static void Main(string[] args) { int max = GetMax(19, 12); //实参 Console.WriteLine(max); Console.ReadKey(); } /// <summary> /// 计算两个整数之间的最大值,并返回 /// </summary> /// <param name="n1">第一个参数</param> /// <param name="n2">第二个参数</param> /// <returns>返回最大值</returns> public static int GetMax(int n1,int n2)//形参 { int max = n1 > n2 ? n1 : n2; return max; } } }
3、方法的功能一定要单一。
GetMax(int n1,int n2)
方法中最忌讳的就是出现提示用户输入的字眼。
namespace _05_方法练习 { class Program { static void Main(string[] args) { //1读取输入的整数 //多次调用(如果用户输入的是数字,则返回,否则提示用户重新输入) //多次调用,涉及到循环 while (true) { Console.WriteLine("请输入一个整数"); string number = Console.ReadLine(); if (Read(number)) break; else Console.WriteLine("请重新输入"); } } public static bool Read(string i) { try { int number = Convert.ToInt32(i); return true; } catch { return false; } } } }
同一个类调用方法,可以取消类名
program.GetMax(n1,n2)
4、out、ref、params
1)、out参数。
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,
我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。
2)、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法。
ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
3)、params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。
params可变参数必须是形参列表中的最后一个元素。
namespace _12_params可变参数 { class Program { static void Main(string[] args) { //test("张三", 99, 88, 77); //console.readkey(); //求任意长度数组的最大值 整数类型 //用params int sum=GetMax(1,2,3,4,2,2,3,4); Console.WriteLine("最大值为{0}", sum); Console.ReadKey(); } public static int GetMax(params int[] n) { int max = n[0]; for(int i=0;i<n.Length;i++) { if(n[i]>max) { max = n[i]; } } return max; } //params 将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理 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); } } }
5、方法的重载
概念:方法的重载指的就是方法的名称相同给,但是参数不同。
参数不同,分为两种情况
1)、如果参数的个数相同,那么参数的类型就不能相同。
2)、如果参数的类型相同,那么参数的个数就不能相同。
***方法的重载跟返回值没有关系。
6、方法的递归
方法自己调用自己。
找出一个文件夹中所有的文件。