C#中事件的简单解释

C#中事件的简单解释

很多程序都有一个共同的需求,即当一个特定的程序事件发生的时候,程序的其他部分可以得到该事件已经发生的通知。

发布者/订阅者模式可以满足这种需求。在这种模式中,发布者类定义了一系列程序的其他部分可能感兴趣的事件,其他类可以“注册”,以便在这些事件发生的时候通知它们。

这一部分的概念都可以类比于触发器的概念,一旦触发器被触发,将执行规定的一系列事件,上面说的发布者/订阅者模式也好理解了,发布者发布一个事件,并且给出触发器,订阅者可以订阅事件,那么在触发器被触发的时候,订阅者将得到通知(从而可以执行自己的方法)。

说的再通俗一点,举一个赛跑的例子,假如ABCDE五个人赛跑,约定听到裁判的枪响之后才能起跑。这里面就涉及到触发的概念,裁判枪响触发了ABCDE起跑。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    delegate void Del();//声明委托
    class Program
    {
        class CaiPan
        {
            public event Del KaiQiang;//事件(触发器),裁判开枪
            public void  Ready()
            {
                Console.WriteLine("CaiPan is ready , and he shoot");//裁判已经准备开枪了
                KaiQiang();//裁判开枪了,触发器被触发了
            }

        }

        class YunDongYuan
        {
            string name;
            public YunDongYuan(CaiPan caipan,string name)//每个运动员都需要订阅裁判开枪这个事件,之后才能做出自己的行为
            {
                caipan.KaiQiang += Run;
                this.name = name;
            }

            public void Run()
            {
                System.Threading.Thread.Sleep(1500);//听到枪响经过一定反应时间后,开始起跑
                Console.WriteLine("运动员:" + name + "开始起跑.....");
            }
        }


        static void Main(string[] args)
        {
            CaiPan caipan = new CaiPan();
            YunDongYuan A = new YunDongYuan(caipan, "A");//A首先订阅事件,寓意A首先听到枪响即首先被触发起跑的事件
            YunDongYuan B = new YunDongYuan(caipan, "B");
            YunDongYuan C = new YunDongYuan(caipan, "C");
            YunDongYuan D = new YunDongYuan(caipan, "D");
            YunDongYuan E = new YunDongYuan(caipan, "E");

            caipan.Ready();//裁判开枪

            Console.ReadKey();
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值