微软提供了这样一个委托:
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);
这个委托有15+重载,
在该委托中各参数前都有in,out等字样,
我自己照着写了一个,把in,out等完全去掉,也能正常运行,
上网了解了下,这是面向对象编程中的协变和逆变。。
大概了解了下意思:
协变是指需要父类做参数的时候,传子类进去也可以,这个很好理解,方便了我们编码,
而逆变是说需要子类的时候,传个父类进去也可以,这就有点不理解了,
在什么场合可以这样使用?也可能是我解理的不对。
想请高手们举个例子讲解一下,协变和逆变的使用场景。
话说我一直都没理解逆变和协变到底是啥.
因为不知道谁会调用,所以限定一下类型,确保结果能正常使用