1、我们在Main()函数中,调用Test()函数,我们管Main()函数称之为调用者,
管Test()函数称之为被调用者。
如果被调用者想要得到调用者的值:
1)、传递参数。
2)、使用静态字段来模拟全局变量。 (C#中,不存在全局变量)
eg: public static int _number=10;
如果调用者想要得到被调用者的值:
返回值
2、
不管是实参还是形参,都是在内存中开辟了空间的。
return 作用:
a.立即结束本次方法
b.在方法中返回要返回的值
this 作用
a.代表当前类的对象
b.显示的调用
本类的构造函数(参数属性最全的那个,有的写上,没有的写0,减少代码冗余)
base 作用:
子类调用其父类的构造函数 使用关键字base,父类没有的在子类中加上。
3、方法的功能一定要单一。
GetMax(int n1,int n2)
方法中最忌讳的就是出现提示用户输入的字眼。
4、out、ref、params
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 _08使用out参数做登陆 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 //分别的提示用户输入用户名和密码 14 //你写一个方法来判断用户输入的是否正确 15 //返回给用户一个登陆结果,并且还要单独的返回给用户一个登陆信息 16 //如果用户名错误,除了返回登陆结果之外,还要返回一个 "用户名错误" 17 //“密码错误” 18 Console.WriteLine("请输入用户名"); 19 string userName = Console.ReadLine(); 20 Console.WriteLine("请输入密码"); 21 string userPwd = Console.ReadLine(); 22 string msg; 23 bool b = IsLogin(userName, userPwd, out msg); 24 Console.WriteLine("登陆结果{0}",b); 25 Console.WriteLine("登陆信息{0}",msg); 26 Console.ReadKey(); 27 } 28 /// <summary> 29 /// 判断登陆是否成功 30 /// </summary> 31 /// <param name="name">用户名</param> 32 /// <param name="pwd">密码</param> 33 /// <param name="msg">多余返回的登陆信息</param> 34 /// <returns>返回登陆结果</returns> 35 public static bool IsLogin(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 else 53 { 54 msg = "未知错误"; 55 return false; 56 } 57 } 58 } 59 }
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 _10ref参数 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 double salary = 5000; 14 JiangJin(ref salary); 15 Console.WriteLine(salary); 16 Console.ReadKey(); 17 } 18 19 public static void JiangJin(ref double s) 20 { 21 s += 500; 22 23 } 24 25 public static void FaKuan(double s) 26 { 27 s -= 500; 28 } 29 } 30 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace _10ref参数 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 double salary = 5000; 14 JiangJin(ref salary); 15 Console.WriteLine(salary); 16 Console.ReadKey(); 17 } 18 19 public static void JiangJin(ref double s) 20 { 21 s += 500; 22 23 } 24 25 public static void FaKuan(double s) 26 { 27 s -= 500; 28 } 29 } 30 }
3)、params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。
params可变参数必须是形参列表中的最后一个元素。
5、方法的重载
概念:方法的重载指的就是方法的名称相同给,但是参数不同。
参数不同,分为两种情况
1)、如果参数的个数相同,那么参数的类型就不能相同。
2)、如果参数的类型相同,那么参数的个数就不能相同。
***方法的重载跟返回值没有关系。
6、方法的递归
方法自己调用自己。
找出一个文件夹中所有的文件。