委托与事件--delegate&&event
委托
访问修饰符 delegate 返回值 委托名(参数);
public delegate void NoReturnNoPara();
public void NoReturnNoParaMethod() {};
delegate地位:密封类,继承自System.MulticastDelegate,内置几个方法:构造方法、Invoke等;
委托的实例化:NoReturnNoPara myD = new NoReturnNoPara(NoReturnNoParaMethod);
委托的调用:myD.Invoke(); 或 myD();
委托的核心:将方法作为参数传递;
委托的好处:委托解耦,减少重复代码;异步多线程;多播委托(一个委托可以‘挂’多个方法+= -=);
Action委托:无返回值的 委托 或 泛型委托,可接受0~16个参数。
public void method(string str,int i){}
Action<string,int> ac = method;
Func委托:有返回值的泛型委托,可接受0~16个参数,最后一个参数为返回类型。注:Func只是泛型委托
public bool isEmpty(int i){}
Func<int,bool> fu = isEmpty;
事件
定义:是带event关键字的委托实例
访问修饰符 event 委托名 事件名;
public event NoReturnNoPara NoReturnNoParaHandlerEvent;
使用范围:事件只能在声明的类中调用(子类都不能用),可以在类外部+= -=;
事件:可以把一堆可变的动作/行为封装出去,交给第三方来指定;
程序设计的时候,我们可以把程序分成两部分,一部分是固定的,直接写死,还有不固定的部分,通过一个事件去开放接口,外部可以随意扩展动作。
框架:完成固定/通用部分,把可变部分留出扩展点,支持自定义
委托与事件--delegate&&event的更多相关文章
- 第一章、C#委托和事件(Delegate、Event、EventHandler、EventArgs)
第一章.C#委托和事件(Delegate.Event.EventHandler.EventArgs) 分类: 学习笔记-C#网络编程2012-12-08 14:10 7417人阅读 评论(3) 收藏 ...
- [转载]C#委托和事件(Delegate、Event、EventHandler、EventArgs)
原文链接:http://blog.csdn.net/zwj7612356/article/details/8272520 14.1.委托 当要把方法作为实参传送给其他方法的形参时,形参需要使用委托.委 ...
- 委托和事件[delegate and event]_C#
委托和事件: 1. 委托:一个能够表示方法的数据类型:它将方法作为对象封装起来,允许在运行时间接地绑定一个方法调用. 2. 声明委托数据类型: public delegate bool Greate ...
- C#编程之委托与事件四(二)【转】
C#编程之委托与事件(二) 我在上一篇文章(C#编程之委托与事件(一) )中通过示例结合的方法介绍了委托,在本文中,我同样以代码示例的方式来介绍C#里的事件机制. 二.事件 1.了解概 ...
- .Net之美读书系列(一):委托与事件
开启新的读书之旅,这次读的书为<.Net之美:.Net关键技术深入解析>. 我是选择性阅读的,把一些自己觉得容易忘记的,或者比较重要的知识点记录下来,以便以后能方便呢查阅. 尊重书本原作者 ...
- 【C#】事件(Event)和代理/委托(Delegate)
代理(Delegate)的例子 delegate void MyDelegate(string str,int index); // 声明代理 class Test { public static v ...
- 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)
并发编程概述 前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...
- 【Unity|C#】基础篇(8)——委托(Delegate)/ 事件(Event)
[学习资料] <C#图解教程>(第13~14章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.bai ...
- Delegate(委托与事件)
Delegate可以当它是一个占位符,比如你在写代码的时候并不知道你将要处理的是什么.你只需要知道你将要引入的参数类型和输出类型是什么并定义它即可.这就是书本上所传达的方法签名必须相同的意思. 系统自 ...
随机推荐
- python3练习100题——037
原题链接:http://www.runoob.com/python/python-exercise-example37.html 题目:对10个数进行排序. 程序分析:可以利用选择法,即从后9个比较过 ...
- Vue之生命周期activated与created使用
created activated 触发顺序 组件创建最初始 created => mounted =>activated 触发次数 只在组件刚创建时创建 在使用keep-alive标 ...
- mysql对表中数据根据某一字段去重
要删除重复的记录,就要先查出重复的记录,这个很容易做到 注意:这是查出所有重复记录的第一条记录,需要保留,因此需要添加查询条件,查出所有的重复记录 ) ) 然后 delete from cqssc w ...
- Django_RESTful API
https://q1mi.github.io/Django-REST-framework-documentation/ 1. DRF(Django REST framework) 序列化的类 2. 解 ...
- 快速ni
代码: while(p>0) (mul(a,b)) = a*b; { 等同于二分 if(p%2==1) mul(ans,a); 目的是为了二分个基数的二次方乘 ...
- U盘拷贝目标文件过大无法复制时的解决方法
在cmd下输入:convert U盘符:/fs:ntfs ---> 回车 转换完成后可以看到U盘属性为NTFS了 这时就可以复制大文件到U盘了
- Codeforces Hello2020 A-E简要题解
contest链接:https://codeforces.com/contest/1284 A. New Year and Naming 思路:签到,字符串存一下,取余拼接. #include< ...
- Git-免密提交
全局设置git免密提交,打开git-bash输入命令: git config credential.helper store --global 单独对某个项目仓库设置时不加 --global 设置之 ...
- android button setMinHeight setMinWidth 无效解决办法
setMinWidth(0);setMinHeight(0);setMinimumWidth(0);//必须同时设置这个setMinimumHeight(0);//必须同时设置这个 两个方法同时设置才 ...
- 在Linux系统上安装Jenkins
1.首先准备安装java环境,安装jdk 详情查看博客以,这里不做多介绍. 2.下载Jenkins至Linux服务器 查看内核版本信息:cat /proc/version uname -m cat / ...