/*20160324*/usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceCh06{classProgram{//params参数数组staticintSumVals(paramsint[]vals){intsum=0;foreach(intvalinvals){sum+=val;}returnsum;}//值引用,1.valisnotanconstvalue;2.valmustbeinitializedstaticvoidshowDouble(refintval){val*=2;return;}//6.4structfunction结构函数structCustomerName{publicstringfirstName,lastName;publicstringWriteName(){returnfirstName+""+lastName;}}//6.5函数重载staticintMaxValue(paramsint[]inArray){intmaxVal=inArray[0];for(inti=1;i<inArray.Length;i++){if(inArray[i]>maxVal)maxVal=inArray[i];}returnmaxVal;}staticdoubleMaxValue(paramsdouble[]inArray){doublemaxVal=inArray[0];for(inti=1;i<inArray.Length;i++){if(inArray[i]>maxVal)maxVal=inArray[i];}returnmaxVal;}//6.6delegate委托//1.委托的返回值和参数与函数的返回值和参数相同delegatedoubleProcessDelegate(doubleparam1,doubleparam2);staticdoubleMultiply(doubleparam1,doubleparam2){returnparam1*param2;}staticdoubleDivide(doubleparam1,doubleparam2){returnparam1/param2;}staticvoidMain(string[]args){//params参数数组,并不限定输入的参数个数intsum=SumVals(1,5,2,4,5);Console.WriteLine("SummedValues={0},",sum);sum=SumVals(2,4,6,8,10,12,14,16);Console.WriteLine("SummedValues={0}.",sum);//Main函数参数,带参数执行//右击项目名称,选择属性,选择调试,添加命令行参数,运行foreach(stringarginargs){Console.WriteLine("{0}",arg);}Console.WriteLine("{0}commandlineargumentwerespecified.",args.Length);//ref引用类型参数,函数内部改变参数值的方法Console.WriteLine("Pleaseenteranumber.");intenterInt;enterInt=Convert.ToInt32(Console.ReadLine());showDouble(refenterInt);Console.WriteLine("doubleis{0}.",enterInt);//结构函数,结构中定义函数CustomerNamemyCustomer;myCustomer.firstName="John";myCustomer.lastName="Franklin";Console.WriteLine(myCustomer.WriteName());//函数的重载,相同函数名,不同的返回值类型和参数类型doubleresult=MaxValue(1,2,3,4,5.2);Console.WriteLine("maxnumber{0}",result);//delegate委托//定义委托ProcessDelegateprocess;Console.WriteLine("Enter2numbersseparatedwithacomma:");stringinputString=Console.ReadLine();intcommaPos=inputString.IndexOf(',');doubleparam1=Convert.ToDouble(inputString.Substring(0,commaPos));doubleparam2=Convert.ToDouble(inputString.Substring(commaPos+1,inputString.Length-commaPos-1));Console.WriteLine("EnterMtomutiplyorDtoDivide:");inputString=Console.ReadLine();if(inputString=="M")process=newProcessDelegate(Multiply);//将委托初始化为函数引用Multiply,可简写为process=Multiply;elseprocess=newProcessDelegate(Divide);//将委托初始化为函数引用Divide,可简写为processs=Divide;Console.WriteLine("Result:{0}",process(param1,param2));//使用委托变量调用它引用的函数Console.ReadKey();}}}