博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# - 委托中的协变
阅读量:6237 次
发布时间:2019-06-22

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

微软msdn对协变和逆变的定义如下:

将方法签名与类型匹配时,协变和逆变为您提供了一定程度的灵活性。协变允许方法具有的派生返回类型比委托中定义的更多。逆变允许方法具有的派生参数类型比委托类型中的更少。

用代码来理解下

using System;

namespace ConsoleApp1

{

class Program

{

class Human { }

class Student : Human { }

class Teacher : Human { }

delegate Human HumanDelegate();

static Teacher TestMethod1()

{

return new Teacher();

}

static Student TestMethod2()

{

return new Student();

}

static void Main(string[] args)

{

HumanDelegate hd = TestMethod1;

HumanDelegate hd2 = TestMethod2;

Console.WriteLine(hd.Invoke().GetType());

Console.WriteLine(hd2.Invoke().GetType().ToString());

Console.Read();

}

}

}

上面代码定义了一个返回类型为Human的委托,两个返回类型继承于Human的普通方法,也就是说,协变允许普通方法具有的返回类型比委托中的返回类型更多。

转载于:https://www.cnblogs.com/tcli/p/6661799.html

你可能感兴趣的文章
Maven仓库的布局
查看>>
PHP定界符<<<的使用方法
查看>>
LeetCode--176--第二高的薪水
查看>>
如何解决开机出现Missing operating system的故障
查看>>
【C#学习笔记】函数重载
查看>>
解除映射错误
查看>>
TOJ 假题之 Cow Brainiacs
查看>>
命令模式(Command Pattern)
查看>>
升级到Ubuntu 11.10遇到的问题
查看>>
二十年后的回眸(8)——晋级的炒更之旅
查看>>
Oracle dataGuard专题:利用冷备创建standby
查看>>
运维工程师的职责和前景
查看>>
小议安全测试【测试帮日记公开课】
查看>>
Red Hat Enterprise Linux 8 Beta 抢先体验
查看>>
objectC 数据类型转换
查看>>
阿里退市,投资人实在应该鼓掌欢迎
查看>>
zabbix企业应用之从数据库提取centos 6.2系统在线天数
查看>>
大学生抄袭,病根在哪?
查看>>
3.VMware vsphere 5.0新体验-安装VMware Center
查看>>
Windows 7的预备知识系列之二:认识Windows 7中的窗口
查看>>