C# 事件机制

一、什么是事件


事件涉及两类角色:事件发布者和事件订阅者

当发生一个事件的时候,事件发布者会发布事件

事件订阅者会接收事件已发生的事件通知

并且做出相应的处理

怎么理解

假如,你肚子饿了(事件发布者)

肚子就会通知大脑(事件订阅者)饿了

大脑(事件订阅者)就会要你放下手中的活快点跑去吃饭(做出相应的动作)

二、如何使用声明事件


事件是依赖于委托实现的

所以要这样声明事件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值