对C#中事件的简单理解
2024-09-25 03:38:37
对于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();
}
} }
虽然这个例子比较简单,但是能够最粗糙的对事件的发布-订阅模型有个最直观的理解。
最新文章
- placeholder js简单实现
- Linux配置本地无密码访问
- bzoj 4553 &;&; HEOI2016 day1t3 seq
- 02- Shell脚本学习--运算符
- mybaits注解
- fzu月赛 2203 单纵大法好 二分
- python 列表生成器
- animation of android (4)
- WebService之Axis2(5):会话(Session)管理
- sublime安装sftp和ctags插件
- homework-04 单词方阵
- SQL 跨服务器数据库增、删、改、查(二)
- Maven项目不打包*.hbm.xml文件
- 16进制字符串转QByteArray,char转16进制字符串
- Apache Hadoop 2.9.2 的快照管理
- AMBER: CPPTRAJ Tutorial C0
- Json、JavaBean、String等互转
- Oracle_SQL(3) DML增删改
- Cookie、Session 和 Token区别
- Velocity初始化过程解析