C#事件简述
有人说事件就是特殊的多播委托,有人说不是,仁者见仁智者见智,用起来是差不多的。
1、首先声明一个委托
public delegate void 一个示例委托();
这个委托一般就是一个归类作用,基于这个委托我可以创建很多个同类型(返回值相同、参数值类型相同,业务逻辑类似)的事件,例如:
namespace System.Windows.Forms
{
public delegate void KeyEventHandler(object sender, KeyEventArgs e);
}
namespace System.Windows.Forms
{
public delegate void MouseEventHandler(object sender, MouseEventArgs e);
}
这两个都是官方定义的委托,一个用于鼠标事件,一个用于键盘事件。
2、创建一个类,并根据类创建一个事件
internal class 闹钟
{
public event 一个示例委托 闹钟响了;
3、创建这个事件的触发方法
public void 到七点了()
{
闹钟响了();
}
4、创建另一个受到闹钟响了影响到的类,并实现具体动作
internal class 打工人
{
public void 起床()
{
Console.WriteLine("让我再睡五分钟");
}
public void 吃早餐()
{
Console.WriteLine("早餐越来越不好吃了");
}
public void 开始打工()
{
Console.WriteLine("开始摸鱼");
}
}
5、根据实际关系,串联起两个类
闹钟 a = new 闹钟();
打工人 b = new 打工人();
a.闹钟响了 += b.起床;
a.闹钟响了 += b.吃早餐;
a.闹钟响了 += b.开始打工;
6、触发
a.到七点了();
7、运行结果
PS:本人为理解方便类名、方法名用了汉语,读者别学我哦,代码规范还是很重要的。
8、全部代码
闹钟类和委托
public delegate void 一个示例委托();
internal class 闹钟
{
public event 一个示例委托 闹钟响了;
public void 到七点了()
{
闹钟响了();
}
}
打工人类
internal class 打工人
{
public void 起床()
{
Console.WriteLine("让我再睡五分钟");
}
public void 吃早餐()
{
Console.WriteLine("早餐越来越不好吃了");
}
public void 开始打工()
{
Console.WriteLine("开始摸鱼");
}
}
主函数
static void Main(string[] args)
{
闹钟 a = new 闹钟();
打工人 b = new 打工人();
a.闹钟响了 += b.起床;
a.闹钟响了 += b.吃早餐;
a.闹钟响了 += b.开始打工;
a.到七点了();
}
标签:Console,WriteLine,委托,C#,void,简述,事件,闹钟,public
From: https://blog.csdn.net/weixin_45903369/article/details/137511742