委托

一.什么是委托

IL层面
1>委托的本质就是一个类
2>继承自System.MulticastDelegate
3>委托里面内置了3个方法:Invoke(),BeginInvoke(),EndInvoke()

二.委托的三个步骤
1>public delegate void MyDelegate();//1.委托的声明
2>MyDelegate myDelegate = new MyDelegate(DoSomething);//2.委托的实例化(构造函数传方法)
3>myDelegate.Invoke();//3.实例调用(Invok调用),这里等于执行了这个方法
myDelegate();//3.直接调用也和上面一行代码是一样的

三.委托的3大意义
1>解耦:
-好处是减少重复代码;
-解耦是解除了判断逻辑和共用逻辑之间的耦合;
-委托传递的是逻辑(逻辑就是方法);
2>异步多线程
3>多播委托
-+=为委托实例按顺序增加方法,形成方法链,Invok()时按顺序执行
--=为委托实例移除方法,从方法链的尾部开始匹配,遇到第一个完全吻合的移除,且只移除一个;没有的也不异常
-多播委托带返回值,结果以最后的为准
-价值:一个变量保存多个方法,可以增减方法;Invok时候可顺序执行

事件

一.什么是事件
1>说白了,就是带event关键字的委托实例
2>事件可以限制变量外部调用,或者直接赋值
3>事件可以把一堆的动作或行为,封装出去,交给第三方指定
4>程序设计时候:
-固定部分,可以写死
-不固定部分,通过一个事件去开放接口,外部可以扩展动作

二.委托和事件的区别和联系
1>委托是一个类型,一个类,事件是委托的实例
2>比如委托时一个Student类,事件是“小明”实例

最新文章

  1. Go语言实战 - 使用SendCloud群发邮件
  2. Tomcat部署Solr4.10.4
  3. Linux常用命令1
  4. MySql中时间类型总结
  5. SQL Server 最小化日志操作解析,应用
  6. mysql中时间类型datetime,timestamp与int的区别
  7. GitHub的代码托管和使用方法
  8. elecworks 图框管理器
  9. HDU2024JAVA
  10. 初学Java ssh之Spring 第一篇
  11. 导入jsp
  12. java-6数组
  13. win10环境下利用pyinstaller把python代码(.py)打包成可执行文件(.exe)
  14. 深入解读阿里云数据库POLARDB核心功能物理复制技术
  15. socket架构
  16. "tsc.exe"已退出,代码1
  17. Java网络编程的基本网络概念
  18. Python学习之解决python下载第三方依赖速度慢的问题
  19. 第16月底18天 phpstudy设置
  20. .NET Core开发日志——Controller

热门文章

  1. 逆向进阶,利用 AST 技术还原 JavaScript 混淆代码
  2. 石油储运生产 2D 可视化,组态应用赋能工业智慧发展
  3. 2.Docker安装
  4. Java高并发-多线程基础
  5. Kube-OVN v1.10.0:新增Windows节点支持,用户自定义子网ACL等10+硬核功能
  6. 04C++核心编程(二-泛型编程)
  7. 【Unity Shader】syntax error: unexpected token 'struct' at line x 错误解决办法
  8. Spring IOC源码研究笔记(2)——ApplicationContext系列
  9. Eureka高可用集群搭建
  10. Markdown常见基本语法