委托(一)——委托本质

目录

什么是委托?


什么是委托?

委托可以看做出C++中指针的升级版,它的本质是一个类。其中定义了方式的类型,使得可以将方法作为另一个方法的参数进行传递。这种写法可以避免程序中存在大量的If else/switch语句,同时提高了程序的扩展性。对于委托的定义主要有以下几种:

    //1.无参数无返回值在类外部委托
    public delegate void NoReturnNoParaOutClass();
    class CustomDelegate
    {
        //2.无参数无返回值在类内部委托
        public delegate void NoReturnNoPara();

        //3.有参数无返回值委托
        public delegate void NoReturnWithPara(int x, int y);

        //4.无参数有返回值委托
        public delegate int NoParaWithReturn();

        //5.有参数有返回值委托
        public delegate int WithParaWithReturn(int x, int y);
    }

由于委托是继承自特殊类MulticastDelegate,因此在使用时需要实例化:通过New来实例化,且要求传递一个和这个委托的参数和返回值完全匹配的方法。

实例化方式主要有三种:

  1. 采用New关键字
  2. 使用语法糖(直接指向方法,简化New)
  3. 指向类型一致的lambad表达式。
        public delegate int WithParaWithReturn(int x, int y);
        //实例化方式1
        WithParaWithReturn withParaWithReturn = new WithParaWithReturn(method);
        //实例化方式2
        WithParaWithReturn withParaWithReturn1 = method; //采用语法糖
        //实例化方式3
        WithParaWithReturn withParaWithReturn2 = (x,y)=> { return 0; };
        //有返回值有参数的方法
        public static int method(int a,int b)
        {
            return a + b;
        }

你可能感兴趣的:(c#)