1. 首页
  2. 编程语言
  3. C#
  4. 你了解C#的协变和逆变吗,看完这篇就懂了

你了解C#的协变和逆变吗,看完这篇就懂了

上传者: 2022-03-08 06:08:50上传 PDF文件 71.88 KB 热度 15次

从C# 4.0开始,泛型接口和泛型委托都支持协变和逆变,由于历史原因,数组也支持协变。以下代码是无法通过编译的此时,我们如果需要为动物园饲养员新增一个输入参数为Stack饲喂的方法,一个比较好的方法是新增一个约束泛型方法:现在,C#增加了协变使IPoppable接口支持协变简化Feed方法协变的天然特性――仅可作为方法返回值,接口(或委托)外部无法进行元素添加,确保了泛型类型安全性,所以不用担心Dog的集合中出现Cat常用的支持协变的接口和委托有:。逆变的天然特性――仅可作为方法输入参数,接口(或委托)无法进行元素获取,即只能将子类赋值到父类上,进而保证了类型安全性。

下载地址
用户评论