请教一个C#中协变与逆变的问题

微软提供了这样一个委托:

public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);

这个委托有15+重载,

在该委托中各参数前都有in,out等字样,

我自己照着写了一个,把in,out等完全去掉,也能正常运行,

上网了解了下,这是面向对象编程中的协变和逆变。。

大概了解了下意思:

协变是指需要父类做参数的时候,传子类进去也可以,这个很好理解,方便了我们编码,

而逆变是说需要子类的时候,传个父类进去也可以,这就有点不理解了,

在什么场合可以这样使用?也可能是我解理的不对。

想请高手们举个例子讲解一下,协变和逆变的使用场景。

九州编程
浏览 704回答 2
2回答

烙印99

推荐阅读 深入理解 C# 协变和逆变

缥缈止盈

因为不知道谁会调用,所以限定一下类型,确保结果能正常使用
打开App,查看更多内容
随时随地看视频慕课网APP