快捷搜索:

C# 4.0新特性-"协变"与"逆变"以及背后的编程

在《上篇》中我们揭示了“缺省参数”的本色,现在我们接着来谈谈C#4.0中另一个紧张的新特点:协变(Covariance)与逆变(Contravariance)。对付协变与逆变,大年夜家肯定不会认为陌生,然则我信托有很多人不能很清晰地说出他们之间的差别。我盼望经由过程这篇文章能够让读者加倍深刻的熟识协变与逆变。然则也不扫除另一种可能,那便是读者这篇文章你对这两个观点加倍隐隐。文章一些内容仅代表小我不雅点,如有不当,还望斧正。

目录

一、两个观点:强类型与弱类型

二、委托中的协变与逆变的应用

三、接口中的协变与逆变的应用

四、从Func看协变与逆变的本色

五、逆变实现了“算法”的重用

一、两个观点:强类型与弱类型

为了后面论述方便,我现在这里自定义两个观点:强类型和弱类型。在本篇文章中,强类型和弱类型指的是两个具有直接或者间接承袭关系的两个类。假如一个类是另一个类的直接或者间接基类,那么它为弱类型,直接或者间接子类为强类型。后续的先容中会用到的两个类Foo和Bar先定义在这里。Bar承袭自Foo。Foo是弱类型,而Bar则是强类型。

1: public class Foo

2: {

3://Others Members...

4: }

5: public class Bar:Foo

6: {

7://Others Members...

8: }

您可能还会对下面的文章感兴趣: