函数
一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。在C#语言中,子程序的作用是由一个主函数和若干个函数构成。由主函数调用其它函数,其它函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编写程序段的工作量。
void是没有返回值,括号内是参数 private只能在当前类里面用,public公共的,可以在整个命名空间使用
为了在以后用到此函数的时候不会忘记此函数的功能,需要加一些注释,这样在使用的时候鼠标放到上面就会显示写好的注释,使用的时候是在函数上面输入///,也就是三个斜杠。
函数一个是传值另一个是传址:
传值就是将实参的值传到所调用的函数里面,实参的值并没有发生变化,默认传值的有int型,浮点型,bool型,char字符型,结构体等等。
传址就是将地址传到所调用的函数里面操作,实参的值也会跟着变化,传址的有数组和字符串string。
上面说的就牵扯到数据的分类,分为值类型和引用类型,值类型的就是传值的那种,引用类型包括字符串类型,数组和对象,字符串类型特殊,主要是因为字符串实际上是一个字符char[]数组,它在修改的时候并不是直接修改,而是新开辟了一个存储空间也就是建立了一个新的字符串,所以它在调用、赋值的时候相当于传值,但它是引用类型的!
例题:
1、 //练习:判断邮箱格式是否正确
//1.有且只能有一个@
//2.不能以@开头
//3.@之后至少有一个.
//4.@和.不能靠在一起
//5.不能以.结尾
/// <summary> /// 判断邮箱格式输入是否正确,有参数,没有返回值 /// </summary> /// <param name="mail"></param> public void Mail(string mail) //有参数,没有返回值 { if (mail.Contains("@")) { int a = mail.IndexOf("@"); int b = mail.LastIndexOf("@"); if (a == b) { if (!mail.StartsWith("@")) { if (mail.Contains(".")) { string mail1 = mail.Substring(a); int c = mail1.IndexOf("."); if (c != 1) { if (mail.Substring(a - 1, 1) != ".") { if (!mail.EndsWith(".")) { Console.Write("输入的邮箱正确!"); } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } /// <summary> /// 判断邮箱格式是否正确,无参数,没有返回值 /// </summary> public void Mail1() //无参数,无返回值 { Console.Write("请输入一个邮箱地址:"); string mail = Console.ReadLine(); if (mail.Contains("@")) { int a = mail.IndexOf("@"); int b = mail.LastIndexOf("@"); if (a == b) { if (!mail.StartsWith("@")) { if (mail.Contains(".")) { string mail1 = mail.Substring(a); int c = mail1.IndexOf("."); if (c != 1) { if (mail.Substring(a - 1, 1) != ".") { if (!mail.EndsWith(".")) { Console.Write("输入的邮箱正确!"); } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } /// <summary> /// 判断邮箱格式是否正确,无参数,有返回值 /// </summary> /// <returns></returns> public string Mail2() //无参数,有返回值 { Console.Write("请输入一个邮箱地址:"); string mail = Console.ReadLine(); if (mail.Contains("@")) { int a = mail.IndexOf("@"); int b = mail.LastIndexOf("@"); if (a == b) { if (!mail.StartsWith("@")) { if (mail.Contains(".")) { string mail1 = mail.Substring(a); int c = mail1.IndexOf("."); if (c != 1) { if (mail.Substring(a - 1, 1) != ".") { if (!mail.EndsWith(".")) { Console.Write("输入的邮箱正确!"); } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } return (mail); } /// <summary> /// 判断邮箱格式是否正确,有参数,有返回值 /// </summary> /// <param name="mail"></param> /// <returns></returns> public string Mail3(string mail) //有参数,有返回值 { if (mail.Contains("@")) { int a = mail.IndexOf("@"); int b = mail.LastIndexOf("@"); if (a == b) { if (!mail.StartsWith("@")) { if (mail.Contains(".")) { string mail1 = mail.Substring(a); int c = mail1.IndexOf("."); if (c != 1) { if (mail.Substring(a - 1, 1) != ".") { if (!mail.EndsWith(".")) { Console.Write("输入的邮箱正确!"); } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } } else { Console.Write("请输入正确的邮箱地址!!"); } return (mail); } static void Main(string[] args) { //Program hanshu= new Program(); //有参数,无返回值 //Console.Write("请输入一个邮箱地址:"); //string a = Console.ReadLine(); //hanshu.Mail("lll@qq.com"); //无参数,无返回值 //hanshu.Mail1(); //无参数,有返回值 //Console.Write((hanshu.Mail3(a)).Substring(2,3)) //有参数,有返回值 //Console.Write("请输入一个邮箱地址:"); //string a = Console.ReadLine(); //Console.Write((hanshu.Mail3(a)).Substring(2,3));
}
2、 //输入班级人数,根据人数输入每人分数, 加十分(用到函数)
public double[] FenShu(double[] score) { for (int i = 0; i < score.Length; i++) { score[i] += 10; } return score; } static void Main(string[] args) { //Console.Write("请输入班级人数:"); //int n = int.Parse(Console.ReadLine()); //double [] score=new double[n]; //for (int i = 0; i < n; i++) //{ // Console.Write("第{0}个人的分数是:",i+1); // score[i] = double.Parse(Console.ReadLine()); //} //Console.Write("所有信息输入完成,请按回车查看!"); //Console.ReadLine(); //Program hanshu = new Program(); //score= hanshu.FenShu(score); //foreach (double aa in score) //{ // Console.WriteLine(aa); //} //Console.ReadLine(); }
3、 //猜拳
//1 剪刀 2石头 3布
//人-电脑
// 0平局
// -1输
//-2 赢
//2 输
//1 赢
for (int i = 1; i > 0; i++) { Console.Write("猜拳 请输入:(剪刀,石头,布)中的一个!"); string quan = Console.ReadLine(); if (quan == "剪刀" || quan == "石头" || quan == "布") { int ren = 0; switch (quan) { case "剪刀": ren = 1; break; case "石头": ren = 2; break; case "布": ren = 3; break; } Random ran = new Random(); int dian = 0; dian = ran.Next(1, 4); switch (dian) { case 1: Console.Write("电脑出的是剪刀!"); dian = 1; break; case 2: Console.Write("电脑出的是石头!"); dian = 2; break; case 3: Console.Write("电脑出的是布!"); dian = 3; break; } Console.WriteLine(); int d = ren - dian; if (d == 0) { Console.WriteLine("本局是平局。"); break; } else if (d == -1 || d == 2) { Console.WriteLine("本局你输了!"); break; } else { Console.WriteLine("本局你赢了!"); break; } } else { Console.WriteLine("您的输入有误!"); } } Console.ReadLine();