进入快速通道的委托(深入理解c#)
1.方法组:所有的名称相同的重载方法合在一起就成为一个方法组。
2.协变性和逆变性:
协变性指的是——泛型类型参数可以从一个派生类隐式转化为基类。
逆变性指的是——泛型类型参数可以从一个基类隐式转化为派生类 。
注意事项:
1. 只有接口和委托支持协变和逆变(如 Fun<out TResult>,Action<in T>),类型或泛型方法的类型参数都不支持协变和逆变。
2.协变和逆变只适用于引用类型,值类型不支持协变和逆变(因为可变性存在一个引用转换,而值类型变量存储的就是变量本身,而不是对象的引用),所以List<int> 无法转化为Ienumerable<object>。
3.必须显示用in或out来标记类型参数。
4.委托的可变性不要在多播委托中使用。
假设一个派生类重载了某个基类中声明的方法,我们打算使用方法组转换创建一个委托的实例。由于c#2中的协变性和逆变性,一个以前只和基类方法匹配的转换,现在也和派生类方法相匹配。在这种情况下,编译器将选择派生类方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了