简单地理解委托就是用来动态代理与其签名相同的
 class Program
    {
        // 声明委托类型CalcCallback,原型如下:
        public delegate double CalcCallback(double x, double y);
         
        static void Main(string[] args)
        {
            // 下面使用3种方式初始化一个委托对象,前提
            // 就是方法的签名与委托类型声明时的签名一样即可
             
            // 1、使用命名方法方式初始化一个委托对象
            CalcCallback add = new CalcCallback(Sum);
 
            // 2、使用拉姆达函数方式初始化一个委托对象
            CalcCallback sub=(x,y)=>{
                return x-y;
            };
 
            // 3、使用匿名函数方式初始化一个委托对象
            CalcCallback mul = delegate(double x, double y)
            {
                return x * y;
            };
 
            Console.WriteLine(add(1,2));
            Console.WriteLine(sub(2, 1));
            Console.WriteLine(mul(2, 2));
 
            Console.ReadKey(true);
        }
        static double Sum(double x, double y) {
            return x + y;
        }
    }