五分钟轻松学之 C# 事件

五分钟轻松学之 C# 事件

序言

学习应该是一件很轻松的事情, 别问我五分钟能干什么? 读一下试试呗?

前言

参考过各种文档后, 我们都知道, 事件的本质是一种委托, 在这里, 委托就不详细说了, 我们直接看什么是事件?
什么是事件?
对, 就如这"事件"两个字的一样, 发生了一件事, 那么这件事就是事件, 比如: 过生日, 出去旅游, 上班等等…
那发生了事件, 必定会引起一些列的事情发生, 我们以过生日为例:
■ 小明过生日发送了朋友圈,
■ 然后妈妈看到后祝小明生日快乐
■ 爸爸看到后也祝小明生日快乐并给你发了个大红包

PS: 别问我为什么小明爸爸妈妈没记得小明生日

事件是一种特殊的多播委托,仅可以从声明事件的类或结构中对其进行调用。类或对象可以通过事件向其他类或对象通知发生的相关事情。
这就很完美符合了我们的发布-订阅(publisher-subscriber) 模型

发送(或引发)事件的类称为“发布者”,接收(或处理)事件的类称为“订阅者”

事件5要素:

1、发布者
2、订阅者
3、事件的声明
4、事件的注册/事件的订阅
5、事件的触发
以上面的例子我们写个Demo看一下

    class Program
    {
        static void Main(string[] args)
        {
            var eventClass = new EventClass();
            eventClass.OnSendACircleOFriends();//当发送朋友圈时 - 发布者
        }
    }
	public class EventClass
    {
        public event Action SendACircleOFriends;//事件的声明
        
        public void OnSendACircleOFriends()
        {
            SendACircleOFriends += MotherSeeTheCircleOFriends;//来自妈妈的订阅
            SendACircleOFriends += FatherSeeTheCircleOFriends;//来自爸爸的订阅
            SendACircleOFriends?.Invoke();//事件的触发
        }

        public void MotherSeeTheCircleOFriends()
        {
            //订阅者 - 妈妈
            Console.WriteLine("妈妈: 祝小明生日快乐!");
        }
        
        public void FatherSeeTheCircleOFriends()
        {
            //订阅者 - 爸爸
            Console.WriteLine("爸爸: 祝小明生日快乐!并向小明砸出一个大红包!");
        }
    }

如上图代码: SendACircleOFriends 是一个无参事件,
当发生发送朋友圈(OnSendACircleOFriends)这件事时,
订阅了妈妈看到的动作(MotherSeeTheCircleOFriends)和爸爸看到的动作FatherSeeTheCircleOFriends)
然后进行SendACircleOFriends 事件的 Invoke触发
我们看一下运行的结果:
事件示例运行结果

当我们触发小明发送朋友圈事件时, 我们收到了订阅者小明爸爸妈妈的祝福 !

五分钟, 你学会了吗?

参考: https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/events/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KhalidDu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值