感谢刘铁猛老师的C#教学视频(值得反复看),以及B站UP主SunnieShine的C#教学专栏。
事件本质是委托字段的封装。
事件之于委托字段,相当于属性之于字段。事件本身不是字段,是字段的保护型包装器;属性不是字段,是字段的保护型包装器。
个人理解,事件在逻辑层面的本质其实是“一个信号”,举个例子就是:“手机收到微信消息”这个事件,会触发“我拿起手机看消息”这个处理方法。
事件的核心就是五部分:
①事件的拥有者
②事件本身
③事件的响应者
④事件的处理器(事件发生后的响应方法)
⑤事件的订阅关系
上述手机收到微信的例子中,其中手机是事件的拥有者,收到微信消息是事件本身,我是事件的响应者,看消息是事件的处理器,我看消息和手机收到微信之间存在事件的订阅关系。
在写代码来自定义事件的时候,实际也是根据上述五个要素来按步骤写即可,参考以下案例,包括了事件的完整声明格式和简约声明格式(语法糖)。C#还准备了通用事件名称EventHandler(object sender, EventArgs)。
using System;
using System.Threading;
namespace ConsoleOnlyTest
{
internal class Program
{
static void Main