(56)C#里的协变(covariant)和逆变(contravariant)
Posted caimouse
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(56)C#里的协变(covariant)和逆变(contravariant)相关的知识,希望对你有一定的参考价值。
C#里的协变(covariant)和逆变(contravariant)
在C#里引用这两个概念是干什么用的呢,主要为了范型类型转换使用的,比如下面的例子就不能编译通过:
//声明List
List<Human> listHuman = new List<Human>();
List<Chinese> listChinese = new List<Chinese>();
//在这里,会出现错误
List<Human> list = new List<Chinese>();
这里使用List<Human> list = new List<Chinese>()就会出错,因为两者的类型不一样,所以需要采用协变的概念来进行从派生类转换为基类,逆变就是从基类转换为派生类。
以上是关于(56)C#里的协变(covariant)和逆变(contravariant)的主要内容,如果未能解决你的问题,请参考以下文章
Scala的协变covariant(+),逆变contravariant(-),上界(<:),下界(;:)