在我们日常的对现实世界的抽象模拟中,经常要遇到数据、对象、数组、方法等问题的抽象,如果一个对象中的数据、对象、数组依赖于外部的某个对象,那么我们可以定位成属性的形式来动态获得数据,然而有些对象的方法也是需要动态获得的,也是依赖于其他对象的,这个时候委托便派上用场了,委托是一个或多个函数指针的抽象,有了委托,我们就可以将函数当做数据来看待,包括使用委托作为变量或数据成员,委托使函数能偶作为参数进行传递,能够作为值从零一个函数返回,甚至能够存储到一个数组中,除此以外,委托还可以用于回调、事件、线程之中。

        委托也可以用匿名方法,可以用于泛型委托、异步调用、组合委托、委托数组、逆变和协变

       逆变和协变,主要是用于继承关系之中,如果变量仅仅用于参数或者仅仅用于返回参数,那么就能够用父类替换成子类,这在泛型中也是如此,对于参数的接收而言,我们可以将初始化的父类给预定的子类,在返回参数而言,我们可以用父类来接收返回的子类。