您的位置:首页 > 文旅 > 旅游 > 网络广告人社区官网_微信小程序开源代码_视频网站搭建_今日十大头条新闻

网络广告人社区官网_微信小程序开源代码_视频网站搭建_今日十大头条新闻

2024/12/27 7:11:17 来源:https://blog.csdn.net/2408_89166609/article/details/144675354  浏览:    关键词:网络广告人社区官网_微信小程序开源代码_视频网站搭建_今日十大头条新闻
网络广告人社区官网_微信小程序开源代码_视频网站搭建_今日十大头条新闻

一、事件的使用步骤

定义委托(如果需要):

如果没有合适的预定义委托,就需要定义一个委托来匹配事件处理程序的签名。例如,public delegate void MyEventHandler(int value);定义了一个名为MyEventHandler的委托,它表示一个返回值为void且带有一个int类型参数的方法。

定义事件:

在发布者类中,使用委托定义事件。例如,public event MyEventHandler MyEvent;定义了一个名为MyEvent的事件,其类型是MyEventHandler委托。

订阅事件:

在订阅者类中,通过+=操作符来订阅事件。例如,假设publisher是发布者对象,subscriber是订阅者对象,并且subscriber有一个名为HandleMyEvent的方法(其签名符合MyEventHandler委托),则可以使用publisher.MyEvent += subscriber.HandleMyEvent;来订阅事件。

触发事件:

当发布者中的某个条件满足时通过调用事件来触发它。通常使用MyEvent?.Invoke(sender, args);的形式,其中sender是触发事件的对象(通常是发布者本身),args是事件参数,?操作符是为了防止事件为空(没有订阅者)时引发异常。

二、事件参数(EventArgs)

EventArgs是一个基类,用于传递事件相关的信息。它可以被继承来创建自定义的事件参数类。例如,MouseEventArgs继承自EventArgs,用于在鼠标相关的事件(如MouseClickMouseMove等)中传递鼠标的位置、按钮状态等详细信息。

标准的EventHandler委托的第二个参数类型是EventArgs。当定义自定义事件时,如果不需要传递额外的信息,可以直接使用EventArgs.Empty作为参数。

三、事件的优势

解耦对象之前的关系:

事件使得发布者和订阅者之间的耦合度降低。发布者不需要知道哪些对象会订阅它的事件,订阅者也不需要知道事件是如何被触发的细节。它们只需要遵循事件的契约(委托的签名)。

提高代码的可维护性和可扩展性:

可以方便地添加或移除订阅者,对事件处理逻辑进行修改,而不会影响到其他部分的代码。例如,在一个大型的企业级应用程序中,不同的模块可以通过事件来进行通信,当需要添加新的功能时,只需要订阅相应的事件并实现处理逻辑即可。

C#练习25

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com