事件(Event)简介
类型的成员,使对象或类具备通知能力的成员
对象A拥有一个事件B,当事件B发生时,对象A又能通知别人的能力,且会推送通知内容(事件参数)
根据通知和事件参数来采取行动的行为称为“响应事件”,响应事件时所做的事称为“事件处理器(Event Handler)
事件的功能:通知 + 可选的事件参数
事件的用法:用于对象或类之间的动作协调与信息传递
事件模型(Event model):也就是“发生-响应”模型。“发生-响应”中有五个部分:对象A存在事件B;另一个或一群对象“订阅”了这个事件B;事件B发生;“订阅”了这个事件的对象依次被通知;被通知到的对象根据事件参数来对事件进行响应
事件组成
- 事件的拥有者(event source,对象)
- 事件成员(event,成员)
- 事件的响应者(event subscriber,对象)
- 事件处理器(event handler,方法成员):一种回调方法
- 事件订阅:将事件处理器与事件关联在一起
事件不会主动发生,在被拥有者的某些内部逻辑触发后才会发生
用于订阅事件的事件处理器必须和事件遵守同一个约定,约定可以约束事件发送给事件处理器的消息的类型,还约束了事件处理器能够处理消息的类型。这个约定就是委托
事件应用
using System;
using System.Timers;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
Timer timer = new Timer();//timer就是事件的拥有者
timer.Interval = 1000;//设置间隔,单位为毫秒
Kid kid = new Kid();//kid是事件响应者
timer.Elapsed += kid.Action;//鼠标移到Action下的红色波浪线再Ctrl+.自动生成方法
//+=:订阅事件
//Elapsed事件:达到间隔时发生
//成员前有“闪电”就是事件;“方块”是方法;“扳手”是属性
timer.Start();//开始计数
Console.ReadLine();
}
}
class Kid
{
//先不写Kid中的内容,在主函数中写到订阅事件后,Ctrl+.直接生成Action方法
internal