委托是什么有什么作用(事件和委托的对比)
2025-03-28 20:32:47雷工笔记
01 事件概念事件是对象对外界信息的刺激产生的一种消息响应机制。本质:事件是委托的进一步包装。事件的参与者:①:发送者(sender):即对象本身,当是本身信息状态变化的时候,触发一个事件,并通知所有的接受者接收。②:接受者(Receiver):即事件的处理者,在事件发送者触发后,会自动执行的代码。
01 事件概念
事件是对象对外界信息的刺激产生的一种消息响应机制。
本质:事件是委托的进一步包装。
事件的参与者:
①:发送者(sender):即对象本身,当是本身信息状态变化的时候,触发一个事件,并通知所有的接受者接收。
②:接受者(Receiver):即事件的处理者,在事件发送者触发后,会自动执行的代码。

02 事件和委托对比
①事件无法直接赋值,(例事件=null,会出现编译错误)委托可以直接赋值(委托=null);
②event对象没有invoke()方法,只能通过使用括号的方式来运行。
03 委托和事件的选择
①正常解决问题,你使用委托和事件没有什么本质区别,所以建议是使用委托。
②若做控件二次开发,扩展控件的事件的时候,就必须使用事件。

04 委托与事件的区别
4.1、目的不同
①委托是一种类型安全的函数指针,它定义了一个方法的类型,允许将方法作为参数传递或赋值给变量。
②事件是委托的一种特殊用途,主要用于实现发布/订阅模式,用于在类或对象之间传递消息。
4.2、使用方式
①委托可以直接被实例化、赋值,并像调用普通方法一样调用。
②事件只能通过+=和-=操作符来订阅或取消订阅,不能直接调用。

4.3、封装程度
①委托的封装程度较低,可以很容易地访问和操作。
②事件的封装程度较高,隐藏了触发事件的细节,只提供了订阅和取消订阅的接口。
4.4、适用场景
①委托适用于需要传递方法作为参数或返回值的 场景,或者需要动态调用方法的场景。
②事件适用于需要实现发布/订阅模式的场景,特别是当需要在类或对象之间传递消息时。