class Program
{
//委托:定义 一系列 签名方法一样 的函数 类型
//委托参数:以函数为实参;
//发展:
//委托 → 匿名方法 → lambda表达式 → 泛型委托 → 表达式树
delegate int Calculator(int x, int y);
delegate int Print();
public static void Main(string[] args)
{
//1、常規方式初始化:委托
int result = 0;
Calculator cal;
Print p;
cal = Sum1;// Calculator cal = new Calculator(Sum1);
result = cal(5, 6);
Console.WriteLine(result);
//2、使用匿名函数
cal = delegate(int a, int b) { return a + b; };
result = cal(7, 8);
Console.WriteLine(result);
//3、lambda 表达式
// 参数列表 lambda运算符 函数主体
cal = (a, b) => { return a * b; };
result = cal(5, 10);
Console.WriteLine(result);
p = delegate() { Console.WriteLine("无参数匿名方法"); return 10; };
p();
// p = delegate{ Console.WriteLine("无参数匿名方法"); return 10; };
p = () => { Console.WriteLine("无参数lambda"); return 10; };
p();
Console.ReadKey();
}
private static int Sum1(int x, int y)
{
return x + y;
}
}