class Program
    {
        static void Main(string[] args)
        {
            //【3】 创建委托对象,关联具体方法
            Cal objCal = new Cal(Add);
            //【4】 通过委托调用方法,而不是直接调用方法
            int result = objCal(10, 20);
            Console.WriteLine(result);
            //【5】 根据需要变换委托指向
            objCal -= Add; // 断开当前委托所关联的方法
            objCal += Sub; // 重新关联一个新方法(减法)
            Console.Read();
        }
        //【2】 根据委托定义具体方法(加法)
        static int Add(int a,int b)
        {
            return a + b;
        }
        static int Sub(int a, int b)
        {
            return a + b;
        }
    }

    //委托定义在类的外边
    //【1】声明委托(定义一个函数原型:返回值+参数类型和个数)
    public delegate int Cal(int a, int b);

委托是方法的指针