C#delegate、event、Action、EventHandler的使用和区别

本文介绍了C#中的委托概念,从delegate的使用开始,讲述了由于安全性问题催生了event的出现。event提供了一种防止意外取消所有订阅的安全机制。接着,EventHandler作为事件处理的通用委托类型,简化了事件处理的定义。最后,Action的引入是为了方便开发者在不需要自定义委托时快速创建委托实例。文章通过小故事和实际代码展示了这四种类型的使用方法。
摘要由CSDN通过智能技术生成

RoutedEventHandler 委托:
https://docs.microsoft.com/zhcn/dotnet/api/system.windows.routedeventhandler?view=windowsdesktop-6.0
小故事讲解这四位的前世今生
曾经.Net大佬只有一个Delegete(委托),别人想用委托的时候,必须得用delegate关键
字来定义一个委托,就像这样
在这里插入图片描述

话说,委托生来是为了将方法也作为参数进行传递的。所以后来它学会了发布者/订阅者
模式。比如:
在这里插入图片描述

但是它有一个弊端,delegate可以使用“=”将所有已经订阅的取消(也可以用+/-对订阅合并和删除,这是后话,不讲),只保留=后新的订阅,这给了犯罪分子可乘之机。
在这里插入图片描述

所以,event应运而生
event是一种特殊的委托,它只能+=,-=,不能直接用=

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值