一、什么是事件
事件涉及两类角色:事件发布者和事件订阅者
当发生一个事件的时候,事件发布者会发布事件
事件订阅者会接收事件已发生的事件通知
并且做出相应的处理
怎么理解
假如,你肚子饿了(事件发布者)
肚子就会通知大脑(事件订阅者)饿了
大脑(事件订阅者)就会要你放下手中的活快点跑去吃饭(做出相应的动作)
二、如何使用声明事件
事件是依赖于委托实现的
所以要这样声明事件
public delegate void delegateFun(string msg); // 声明委托
public event delegateFun eventFun; // 基于委托声明事件
三、简单的事件实例
举个栗子
using System;
namespace MyWorkspace
{
class Program
{
class A /// 肚子
{
public delegate void delegateFun(string msg); // 声明委托
public event delegateFun eventFun; // 基于委托声明事件
public void onDelegateFun(string msg)
{
eventFun?.Invoke(msg); // 触发事件(肚子饿了)
}
}
class B /// 大脑
{
// 事件处理函数(大脑要做什么事儿)
public void delegateFuning(string msg)
{
Console.WriteLine("肚子饿了,赶紧去吃饭");
}
}
static void Main(string[] argc)
{
A a = new A(); // 肚子
B b = new B(); // 大脑
// 绑定事件(订阅与发布)
a.eventFun += new A.delegateFun(b.delegateFuning);
a.onDelegateFun("饿啦");
a.onDelegateFun("饿啦");
a.onDelegateFun("饿啦");
Console.ReadKey();
}
}
}
三、_End
1