委托的写法
using System; namespace weituo { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.WriteLine("写法一!"); func1(); Console.WriteLine(); Console.WriteLine("写法二!"); func2(); Console.WriteLine(); Console.WriteLine("写法三!"); func3(); Console.WriteLine(); } #region 委托的方法 #region 写法一,需要写出专门委托的函数,需要自定义委托 /// <summary> /// //委托声明 -- 定义一个签名: 支持多个输入参数 /// </summary> /// <param name="In_1"></param> /// <param name="In_2"></param> /// <param name="In_3"></param> /// <returns></returns> delegate double MathAction(double In_1, double In_2, double In_3); //执行委托的方法 static void func1() { MathAction ma = Double; Console.WriteLine(ma(1, 2, 3)); } //委托执行的函数,最多支持16个输入参数 static double Double(double In_1, double In_2, double In_3) { return In_1 * In_2 * In_3 * 2; } #endregion #region 写法二,需要写出专门委托的函数,不需要自定义委托(使用系统委托) //执行委托的方法 static void func2() { //最后一个是输出类型,最多支持16个输入类型 Func<double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double> func = Double16; Console.WriteLine(func(4.5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 1)); } //委托执行的函数,最多支持16个输入参数 static double Double16(double In_1, double In_2, double In_3, double In_4, double In_5, double In_6, double In_7, double In_8, double In_9, double In_10, double In_11, double In_12, double In_13, double In_14, double In_15, double In_16) { return In_1 * In_2 * In_3 * 2; } #endregion #region 写法三,不需要写出专门委托的函数,不需要自定义委托 static Func<double, double, double, double> result = (In_1, In_2, In_3) => In_1 * In_2 * In_3 * 2; static Func<double, double, double, double> result4 = (In_1, In_2, In_3) => { var ddd = In_1 * 2; ddd = In_2 * ddd; ddd = In_3 * ddd; return ddd; }; static void func3() { //*写法三,不需要写出专门委托的函数,还需要自定义委托 * */ Console.WriteLine(result(4.5, 2, 2)); Console.WriteLine(result4(4.5, 2, 2)); } #endregion #endregion } }