博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
逆变与协变
阅读量:6868 次
发布时间:2019-06-26

本文共 467 字,大约阅读时间需要 1 分钟。

为了理解逆变(Covariance)与协变(Contravariance),我们需要理解首先什么是子类型(subtype)。

子类型(subtype):如果Cat是Animal的子类型,那么所有引用Animal类型变量的表达式都能使用Cat类型的变量代替Animal类型的变量。

型变关系(Variance)指的是复合子类型的关联关系。例如List<Animal>和List<Cat>之间的关联性,谁应该是谁的子类型呢?

 

不同的复合子类型的构造器会对让不同的复合子类型之间有不同的型变关系。例如,C#中:

 

  1. IEnumerable<Cat>是IEnumerable<Animal>的子类型,IEnumerable<T>对T是协变关系
  2. Action<Animal>是Action<Cat>的子类型,Action<T>对类型T为逆变关系
  3. IList<Cat>和IList<Animal>之间没有相互的子类型关系,称IList<T>对T为不变关系

 

转载于:https://www.cnblogs.com/Nuk9/p/5071842.html

你可能感兴趣的文章
将HTML5 Canvas的内容保存为图片
查看>>
hdu2222 Keywords Search AC自动机
查看>>
网站的架构CS和中间件
查看>>
h5存储的优点
查看>>
树的prufer编码
查看>>
svg_path
查看>>
java新知识系列 三
查看>>
Core Data 删除某条指定记录的数据
查看>>
iOS mac添加证书 不能修改“System Roots”钥匙串错误
查看>>
UVA442-栈
查看>>
CSI 400 Operating Systems
查看>>
配置Jmeter的自定义参数
查看>>
【C#】虹软人脸识别ArcFaceDEMO 开发应用全过程
查看>>
Tableau 地图无法识别怎么办
查看>>
uims选课
查看>>
php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman...
查看>>
mkfs命令详解
查看>>
实体copy
查看>>
软件测试st1
查看>>
Elementary Methods in Number Theory Exercise 1.4.6
查看>>