C#区分委托与事件

目录

委托与事件的主要区别

1. 定义和本质

2. 可访问性

3. 修改与触发

4. 目的与使用场景

 举例

1. 更适合使用委托的场景

2. 更适合使用事件的场景

5. 封装和安全性

委托与事件的相同点

1.基于委托

2.支持多播

3.通知机制

委托与事件的对比总结

委托与事件的关系

1.委托是事件的基础

2.委托可以直接调用,而事件不能直接触发


       本篇文章来学习一下委托与事件的区别,以及它们之间的关系。

委托与事件的主要区别

1. 定义和本质

1)委托(Delegate):委托是一种数据类型,可以存储方法的引用,允许通过该引用调用方法,也允许通过 += 和 -= 操作符来添加或删除方法。简而言之,委托是一种数据类型,委托代表的是方法,当调用委托时就是调用了这个方法。

public delegate 返回类型 委托类型名(形参列表);

2)事件(Event):事件是一种特殊的委托,它基于委托,是委托的封装,确保外部代码不能直接更改事件的委托列表(即确保事件不能被直接赋值或修改),只能通过订阅 += 和取消订阅 -= 来操作事件。

public event 委托类型 事件名;

2. 可访问性

1)委托:委托对象是可以公开访问和修改的。任何持有委托实例的代码都可以直接调用它所绑定的方法。

2)事件:事件的委托实例仅能由事件的定义者(通常是类的发布者)触发,而不能由订阅者直接调用。订阅者只能添加或移除事件处理程序,但不能直接触发事件。

3. 修改与触发

1)委托:委托的实例可以随时被修改(通过 += 或 -=)和触发(通过调用委托实例)。外部代码可以通过赋值的方式将不同的方法绑定到同一个委托上,也可以直接触发这些方法。

2)事件:事件的委托实例不能直接修改。订阅者不能更改事件所绑定的委托对象,只能添加或移除事件处理程序(方法)。事件只能由定义事件的类触发,外部代码不能直接触发事件。

4. 目的与使用场景

1)委托:委托用于方法的引用,常用于回调函数、异步编程、方法参数传递等场景。委托可以在运行时动态调用不同的方法。

2)事件:事件用于实现发布-订阅模式,通常用于通知多个订阅者某个事件的发生。例如,按钮点击事件、文件上传完成事件等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值