using System; using System.Collections.Generic; using System.Linq; using System.Text; /* 函数 * 孙数就是将一堆代码进生重用的一种机制,函数就是一段代码,这段代码可能有输入的值,可能会返回值,一个函数就像一个专门做这件事的人,我们调用它来作一些事情,它可能需要我们提供一些数据给它 * 它执行完成后可能会有一些执行结果给我们,要求的数据就叫参数,返回的执行结果就是返回值 * Console.ReadLine就是一个有返回结果的函数 * Console.WriteLine("Hello")就是一个有执行参数的函数,只有告诉WriteLine被打印的数据它才知道如何打印: * int i=Convert.ToInt32("22")则是一个既有参数又有返回值的函数 * 有了函数写代码就像拼积木,C#中的各种各样的技术其实就是通过for,if等这些基础的语法将不同的函数按照一定逻辑组织起来到 */ namespace _38函数 { class Program { static void Main(string[] args) { /*string s = Console.ReadLine(); //返回值,执行结果 int i = ReadInt(); i++; Console.WriteLine("{0}",i);*/ //计算两个整数中的最大值 //Console.WriteLine(maxInt(44,55)); //计算输入数组的和 //int[] a = { 1,2,66,99,66}; //int sum = _Sum(a); //Console.WriteLine("计算总和为:{0}",sum); //确定函数参数的原则,自己能确定的数据自己内部解决,自己确定不了的数据过参数传递 //可变参数 //参数数组: int sum(params int[] values) //int sum(string name, params int[] values) 可变参数数组必须是最后一个 //参数默认值(.Net4.0): void SayHello(string name, int age=20) //VFunc("aa","bb","cc","dd"); //可变参数只能放在函数参数的最后一个 //SayHello("Xlc","白菜","黄花"); //函数的默认值 //iHello(); //函数的重载(函数的重名) //参数类型不同或者参数个数不同(不严谨),与返回值无关 iHello("xxd",29); iHello("姚明"); Console.ReadKey(); } static void iHello(string name = "匿名", int age=20) { Console.WriteLine("大家好我的名字叫:{0} 我今年:{1}", name,age); } static void iHello(string name = "匿名") { Console.WriteLine("大家好我的名字叫:{0}",name); } static void SayHello(string name, params string[] nickname) { Console.WriteLine("我的名称是:{0}",name); foreach(string _name in nickname){ Console.WriteLine("我的昵称是:{0}",_name); } } static void VFunc(params string[] values) { foreach (string name in values) { Console.WriteLine("Name为:{0}",name); } } //计算一个整数数组的总合 static int _Sum(int[] myint) { int sum=0; for (int i = 0; i < myint.Length; i++) { sum += myint[i]; } return sum; } //对比两个整数的大小 static int maxInt(int a, int b) { if (a > b) { return a; } else if (b > a) return b; else return 0; } static int ReadInt() { return 3; } } }