我来分析委托的协变与逆变
class Phone
{
}
class Mobile : Phone
{
}
delegate Phone PhoneDele();
class Program
{
static void Main(string[] args)
{
Program pro = new Program();
PhoneDele pd1 = pro.GetPhone;
PhoneDele pd2 = pro.GetMobile;
}
public Phone GetPhone()
{
return null;
}
public Mobile GetMobile()
{
return null;
}
}
委托pd2的返回类型为Phone(父类),GetMobile的返回类型为Mobile(子类),将Mobile(子类)类型的返回值赋给Phone(父类),称为协变。
class Phone
{
}
class Mobile : Phone
{
}
delegate Phone PhoneDele(Mobile pho);
class Program
{
static void Main(string[] args)
{
Program pro = new Program();
PhoneDele pd1 = pro.SetPhone;
PhoneDele pd2 = pro.SetMobile;
}
public Phone SetPhone(Phone pho)
{
return null;
}
public Mobile SetMobile(Mobile mob)
{
return null;
}
}
区别在于:1协变关注与返回值,逆变关注与参数;2协变是发生在方法最后对返回值的操作,逆变是发生在方法调用中间的对参数的操作。
转载于:https://blog.51cto.com/supermaty/360510
我来分析委托的协变与逆变相关推荐
- .Net中委托的协变和逆变详解
关于协变和逆变要从面向对象继承说起.继承关系是指子类和父类之间的关系:子类从父类继承所以子类的实例也就是父类的实例.比如说Animal是父类,Dog是从Animal继承的子类:如果一个对象的类型是Do ...
- .NET可变性解析(协变和逆变)
[一]何为可变性 可变性是.NET4.0中的一个新特性,可变性可分为 : 协变性.逆变性.不可变性. 那么在.NET4.0之前是否有可变性? 答案是肯定的,我们可以通过下面的几个实例来简单的了解一下. ...
- 深入理解 C# 协变和逆变【转】
msdn 解释如下: "协变"是指能够使用与原始指定的派生类型相比,派生程度更大的类型. "逆变"则是指能够使用派生程度更小的类型. 解释的很正确,大致就是这样 ...
- C#协变和逆变 - 译
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/covariance-contravariance/ ...
- C#中协变和逆变的基本概念、List和List.Select方法的命名空间
在 C# 中,协变和逆变能够实现数组类型.委托类型和泛型类型参数的隐式引用转换. 协变保留分配兼容性,逆变则与之相反. msdn 解释如下: "协变"是指能够使用与原始指定的派生类 ...
- 泛型--协变与逆变(转)
对于泛型的知识,一直比较模糊,现在有机会整理一下,突发发现C#还有很多你不知道的东东,继续.NET FrameWork中泛型的协变与逆变: 1. 可变性的类型:协变性和逆变性 可变性是以一种类型安全的 ...
- 对协变和逆变的简单理解
毕业快一年了,边工作边学习,虽说对.net不算精通,但也算入门了,但一直以来对协变和逆变这个概念不是太了解,上学时候mark了一些文章,今天回过头看感觉更糊涂了,真验证本人一句口头禅"知道的 ...
- 深入理解 C# 协变和逆变
msdn 解释如下: "协变"是指能够使用与原始指定的派生类型相比,派生程度更大的类型. "逆变"则是指能够使用派生程度更小的类型. 解释的很正确,大致就是这样 ...
- Scala入门到精通——第二十一节 类型参数(三)-协变与逆变
本节主要内容 协变 逆变 类型通匹符 1. 协变 协变定义形式如:trait List[+T] {} .当类型S是类型A的子类型时,则List[S]也可以认为是List[A}的子类型,即List[S] ...
最新文章
- 关于php插件pdo_mysql的安装
- python在线读-文档编辑工具Markdown
- NYOJ 589 糖果
- javascript简单介绍
- MFC关键技术-消息映射机制
- 在 Dubbo3.0 上服务治理的实践
- 关于 ssh-keygen 的一点疑问
- 关于百度地图API的地图坐标转换问题
- 基于Raspberry pi的BMI160驱动程序实例
- python中transform_Python rendering.Transform方法代码示例
- electron 通过nodejs的winre库实现软件开机自启动
- 技巧_altium中两个PCB文件合并为一个进行加工
- min_25 JZOJ5594 最大真因数
- Java中Set Map List 的区别
- 骨传导原理是什么?骨传导耳机的利弊
- python随机森林特征重要性_基于随机森林识别特征重要性(翻译)
- DNS中的SPF记录
- [生存志] 第110节 黄石公圯上授三略
- 手机导航精度小于1米,北斗高精度定位技术想象力不止于此
- 计算机专业校企合作协议,计算机专业之校企合作简论