对于C#中的事件,我举了个简单的例子来理解事件及其处理。

这个例子中母亲是事件的发布者,事件是吃饭了。儿子和父亲是事件的订阅者,各自的Eat方法是处理事件的方法。

下面是详细的加注的例子:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO; /* C#中处理事件采用发布-订阅模型(publisher-subscriber model)
* 包含委托和事件申明的类是发布器
* 包含事件处理的类是订阅器
*
* C#中申明事件以及事件处理的步骤:
* 1.定义委托和其相关联的事件
* 2.在发布器中写触发事件的条件(方法、其他事件等)
* 3.在订阅器中写处理事件的方法程序
* 4.将事件订阅处理事件的程序,格式是: <事件> += new <与事件关联的委托>( <处理事件的方法名> )
*/
namespace CsharpStudy
{
//定义一个“母亲”类,是发布器
class Mum {
//与事件关联的委托的定义
public delegate void mydelegate();
//事件的定义
public event mydelegate EatEvent; public void Cook() {
Console.WriteLine("母亲:我饭做好了,快来吃饭了...");
//触发事件
EatEvent();
} } //定义一个“儿子”类,是订阅器
class Son {
//事件处理方法
public void Eat() {
Console.WriteLine("儿子:好,等会,妈,我玩完这局再吃...");
}
} //定义一个“父亲”类,是订阅器
class Father {
//事件处理方法
public void Eat() {
Console.WriteLine("父亲:好,老婆,我来吃饭了...");
}
} //主程序类
class Program
{
//程序入口
static void Main(string[] args)
{
/************Main function***************/
//实例化三个类
Mum mun = new Mum();
Father father = new Father();
Son son = new Son(); //事件订阅方法(订阅son和father的Eat方法)
mun.EatEvent += new Mum.mydelegate(son.Eat);
mun.EatEvent += new Mum.mydelegate(father.Eat); mun.Cook(); /****************************************/ Console.ReadKey();
}
} }

虽然这个例子比较简单,但是能够最粗糙的对事件的发布-订阅模型有个最直观的理解。

最新文章

  1. placeholder js简单实现
  2. Linux配置本地无密码访问
  3. bzoj 4553 &amp;&amp; HEOI2016 day1t3 seq
  4. 02- Shell脚本学习--运算符
  5. mybaits注解
  6. fzu月赛 2203 单纵大法好 二分
  7. python 列表生成器
  8. animation of android (4)
  9. WebService之Axis2(5):会话(Session)管理
  10. sublime安装sftp和ctags插件
  11. homework-04 单词方阵
  12. SQL 跨服务器数据库增、删、改、查(二)
  13. Maven项目不打包*.hbm.xml文件
  14. 16进制字符串转QByteArray,char转16进制字符串
  15. Apache Hadoop 2.9.2 的快照管理
  16. AMBER: CPPTRAJ Tutorial C0
  17. Json、JavaBean、String等互转
  18. Oracle_SQL(3) DML增删改
  19. Cookie、Session 和 Token区别
  20. Velocity初始化过程解析

热门文章

  1. MySQL 体系结构及存储引擎
  2. Lucid Dream
  3. aliyun maven仓库连不上
  4. css 盒子 取值
  5. 使用angularJS设置复选框的回显状态
  6. Integer和int踩过的坑
  7. mysql案例分析
  8. nginx实现fastcgi反向代理
  9. html简单代码示例
  10. 用js刷剑指offer(二叉搜索树的后序遍历序列)