协变逆变

news/2025/3/14 13:38:08/文章来源:https://www.cnblogs.com/cannedmint/p/18685341

协变逆变

协变:

因为父类可以装子类,所以子类变成父类是协变

比如 string 变成 object

逆变:

父类可以装子类,但子类不能装父类,所以父类变成子类是逆变

比如 object 变成 string

协变和逆变是用来修饰泛型的

协变: out

逆变: in

用于在泛型中修饰泛型字母,只有泛型接口和泛型委托中才能使用


作用

//用out修饰的泛型只能用作返回值
delegate T TestOut<out T>();
//用in修饰的泛型只能用作参数
delegate void TestIn<in T>(T t);
//结合里氏替换原则理解
class Father{}
class Son:Father{}
//协变
TestOut<Son> os =() =>
{return new Son();
};
TestOut<Father> of = os;
//实际返回的是os里面装的Son函数
Father f =of();
//逆变
TestIn<Father> iF= (value)=>
{};
TestIn<Son> iS = iF;
//实际上调用的是iF
iS(new Son());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/898631.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB R2024b 安装教程

MATLAB R2024b 安装教程 软件介绍 MATLAB 是由 “Matrix” 和 “Laboratory” 两个词组合而成,意为“矩阵工厂”,是一款专注于科学计算、数据可视化和交互式程序设计的高科技计算环境。MATLAB 集成了数值分析、矩阵计算、科学数据可视化以及非线性动态系统建模和仿真等强大功…

手把手教如何将若依前后端分离项目在Tomcat下部署教程

如果你想在Tomcat单独部署诺依项目,前提你要配置好诺依相关的环境,比如安装jdk,mysql,redis,maven等环境,并且开发工具能够正常把项目跑起来,部署可自行去诺依官网查看相关教程。 接下来将详细讲解诺依项目部署在Tomcat下运行相关操作:后端部署1.打开开发工具,修改配置与打…

ASE40N25-ASEMI电动工具专用ASE40N25

ASE40N25-ASEMI电动工具专用ASE40N25编辑:ll ASE40N25-ASEMI电动工具专用ASE40N25 型号:ASE40N25 品牌:ASEMI 封装:TO-247 批号:最新 最大漏源电流:40A 漏源击穿电压:250V RDS(ON)Max:70mΩ 引脚数量:3 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:N沟道MO…

使用echarts创建一个进度条,怎么设置流光效果

使用echarts创建一个进度条,怎么设置流光效果1.引言: 相信大家做大屏都会用到echarts,但是我们是否能把他做些动画效果呢? 那么今天就来介绍一个bar进度条的流光效果。 2.制作过程: 首先:第一步我们先来制作一个进度条:option = {xAxis: {show: false,max: 1,},yAxis: {…

【快速判断是否存在利器】布隆过滤器和布谷鸟过滤器

从入门到精通:布隆过滤器和布谷鸟过滤器 在计算机科学领域,过滤器(Filter)是一种用于快速判断元素是否属于某个集合的数据结构。布隆过滤器(Bloom Filter)和布谷鸟过滤器(Cuckoo Filter)是两种常用的概率型过滤器,它们以高效的空间利用率和查询速度著称,广泛应用于缓…

分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!

前言 今天大姚给大家分享 3 个 .NET 开源、免费的文件压缩处理库,希望可以快速帮助同学们实现文件压缩和解压功能! SharpCompress SharpCompress 是一个基于 C# 编写的压缩库,支持多种压缩格式的解压与部分格式的写入,专为.NET多版本设计,适合处理大文件和流式压缩。适用于…

4S店如何做好线索管理?900条线索硬刚11台成交的底层逻辑

什么是4S店的线索管理?4S店线索管理怎么做?这篇来聊聊4S店怎么管好销售线索,希望对大家有所帮助。 线索管理,说白了就是别让客户信息浪费掉,把每个潜在客户的价值榨干。但现实是,很多店要么被无效线索淹没,要么跟进不到位,最后成交率低得可怜。 所以这篇我结合行业经验…

69.9K star!这个API调试神器让你告别Postman,开源免费真香!

Hoppscotch是一款专为开发者打造的轻量级API调试工具,凭借其极简的界面设计和强大的功能支持,已成为GitHub上最受欢迎的API开发工具之一。无需安装客户端,打开浏览器即可享受媲美Postman的专业体验!嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和…

古生物学家与人工智能的较量

古生物学家与人工智能的较量 捍卫史前真相:人工智能如何威胁古生物学的艺术与准确性 亚历杭德罗伊斯基尔多洛佩兹,博士由Mistral Le Chat创作的人工智能恐龙。有许多错误,但最明显的就是额外的一条腿。五条腿的恐龙有人要吗? 曾经,我问过ChatGPT:人工智能取代古生物学家的…

【日记】这两天收了好多好多快递!(896 字)

正文剩下的化妆品都到了。照片打印机也到了。其实在看到 into you 这个品牌的时候,我第一反应直接直译为 “进入你”。事实证明我还是太色了,笑死。看了一下它的翻译,“心慕与你”。颇有文学作品那种乱翻译的味道(笑。此外还发现它的写法有很多种,有时候把 in 和 to 分开,…

Nginx配置文件不清楚如何重启并成功运行服务

事件起因是公司阿里云测试域名解析失败,通过与阿里云售后联系处理排查,发现是由于80和443端口不可达导致。随后联系云服务器运营商,经过简单沟通之后,即使在配置了安全组情况下,还是存在一样问题。最终问题定位是云服务器中没有对80和443端口的监听,经过分析最终的生产服…

sqlplus显示乱码如何处理

一、乱码二、查看数据库字符集 SQL> SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER IN (NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET); PARAMETER VALUE NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET AL32UTF8三、操作系统设置NLS_LANG [oracle@yeshuo ~]$ …