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
}
}