c# 协变和逆变的理解

一下内容全部为自己的理解,不一定正确。

委托的协变和逆变理解起来真是有点绕,总的来说从委托的声明到执行就是一个投入和产出的过程。

委托声明就不说了,想想执行吧。

委托执行的时候 ,  传入的参数列表的值为投入的东西,而返回值就是 产出的东西,结合 基类和派生的关系,派生类可自动转换为基类,

这样的话,在参数列表传递(参数列表的类型就是委托指定的,)给方法的时候可以转化为这些参数的基类(方法中定义基类参数可实现自动转化),所以委托的参数类型可定义为派生类。

这就是委托的》》逆变

在方法 返回值的时候,同样,最终返回的是基类,也就是在返回值的过程中可实现一个 派生类到基类的自动转换过程,定义方法的时候返回值

为派生类,而委托定义为基类,所以有一个派生类到基类的自动转化。

这就是委托的》》协变

在学习的过程中发现 匿名函数 居然不支持 逆变 ,有点匪夷所思

原文地址:https://www.cnblogs.com/zwqsgff/p/3497227.html