/* 20160324 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ch06 { class Program { //params 参数数组 static int SumVals(params int[] vals) { int sum = 0; foreach (int val in vals) { sum += val; } return sum; } //值引用, 1.val is not an const value; 2. val must be initialized static void showDouble(ref int val) { val *= 2; return; } //6.4 struct function 结构函数 struct CustomerName { public string firstName, lastName; public string WriteName() { return firstName + " " + lastName; } } //6.5 函数重载 static int MaxValue(params int[] inArray) { int maxVal = inArray[0]; for (int i = 1; i < inArray.Length; i++) { if (inArray[i] > maxVal) maxVal = inArray[i]; } return maxVal; } static double MaxValue(params double[] inArray) { double maxVal = inArray[0]; for (int i = 1; i < inArray.Length; i++) { if(inArray[i]>maxVal) maxVal = inArray[i]; } return maxVal; } //6.6 delegate 委托 //1.委托的返回值和参数与函数的返回值和参数相同 delegate double ProcessDelegate(double param1, double param2); static double Multiply(double param1, double param2) { return param1 * param2; } static double Divide(double param1, double param2) { return param1 / param2; } static void Main(string[] args) { //params 参数数组,并不限定输入的参数个数 int sum = SumVals(1,5,2,4,5); Console.WriteLine("Summed Values = {0}, ",sum); sum = SumVals(2, 4, 6, 8, 10, 12, 14, 16); Console.WriteLine("Summed Values = {0}.", sum); //Main函数参数,带参数执行 //右击项目名称,选择属性,选择调试,添加命令行参数,运行 foreach(string arg in args) { Console.WriteLine("{0}",arg); } Console.WriteLine("{0} command line argument were specified.", args.Length); //ref 引用类型参数,函数内部改变参数值的方法 Console.WriteLine("Please enter a number."); int enterInt; enterInt = Convert.ToInt32(Console.ReadLine()); showDouble(ref enterInt); Console.WriteLine("double is {0}.", enterInt); //结构函数,结构中定义函数 CustomerName myCustomer; myCustomer.firstName = "John"; myCustomer.lastName = "Franklin"; Console.WriteLine(myCustomer.WriteName()); //函数的重载,相同函数名,不同的返回值类型和参数类型 double result = MaxValue(1, 2, 3, 4, 5.2); Console.WriteLine("max number {0}", result); //delegate 委托 //定义委托 ProcessDelegate process; Console.WriteLine("Enter 2 numbers separated with a comma:"); string inputString = Console.ReadLine(); int commaPos = inputString.IndexOf(','); double param1 = Convert.ToDouble(inputString.Substring(0, commaPos)); double param2 = Convert.ToDouble(inputString.Substring(commaPos + 1, inputString.Length - commaPos - 1)); Console.WriteLine("Enter M to mutiply or D to Divide:"); inputString = Console.ReadLine(); if (inputString == "M") process = new ProcessDelegate(Multiply);//将委托初始化为函数引用Multiply,可简写为process = Multiply; else process = new ProcessDelegate(Divide);//将委托初始化为函数引用Divide,可简写为processs = Divide; Console.WriteLine("Result:{0}", process(param1, param2));//使用委托变量调用它引用的函数 Console.ReadKey(); } } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。