.NET进阶篇-语言章-2-Delegate委托、Event事件

知识只有经过整理才能形成技能

整个章节分布简介请查看第一篇

内容目录

一、概述

二、解析委托知识点

1、委托本质

2、委托的使用

3、委托意义

逻辑解耦,减少重复代码

代码封装支持扩展

匿名方法和Lambda表达式

异步多线程

多播委托

三、事件

四、总结

一、概述

先说下委托,委托我们也经常用到。详尽了解委托是必要的,不然在异步多线程的编程中会一头雾水。委托本质就是一个类,和我们平常定义的类没多大区别。只是这个类的作用的是描述一些方法,没有数据成员。一个委托定义了一类拥有同样返回类型和参数的方法规范。委托的声明语法就是一个没有方法体的方法前面加上delegate关键字。既然本质是一个类,那它就可以在任何可以定义普通类的位置来定义委托。委托是一个能把方法作为参数传递的对象

事件就简单了,事件就是委托的一个实例

二、解析委托知识点

1、委托本质。

在VS中编码中,声明委托后,会发现委托的着色提示和类时一样。

但好像不是很有说服力。高级语法都做了很好的封装,方便编码人员。.NET的二次编译,第一次编译成IL中间语言,中间语言也是一种编程语言,只是它不像高级语言那么方便人类阅读。我们可以通过一些工具(像ILSpy)反编译来窥探下它的内部逻辑。

如图中红框所示,我们定义的普通类MyDelegate和委托类型NoReturnPara(继承自MulticastDelegate)是一致的,都是class。在委托类型NoResultNoPara中也有.ctor(在IL中构造函数),此外还有我们以后会经常用到的Invoke方法和BeginInvoke、EndInvoke方法,前者是同步调用,后者是异步调用

2、委托的使用

我们使用委托一般就是三步走,第一步定义委托,第二部声明委托实例,第三部调用。定义委托就像上面所示在一个没有方法体的方法前加上delegate关键字即可。它给定了一种约束,只能用规定的方法结构(返回值和参数)的实例化委托。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值