(七)CSharp-CSharp图解教程版-事件

这篇具有很好参考价值的文章主要介绍了(七)CSharp-CSharp图解教程版-事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、发布者和订阅者

发布者/订阅者模式(publish/subscriber pattern): 很多程序都有一个共同的需求,即当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知。

发布者:

  • 发布者类定义了一系列程序的其他部分可能感兴趣的事件。
  • 发布某个事件的类或结构,其他类可以在该事件发生时得到通知。

订阅者:

  • 订阅者类可以“注册”,以便在这些事件发生时收到发布者的通知。这些订阅者类通过向发布者提供一个方法来“注册”以获取通知。
  • 注册并在事件发生时得到通知的类或结构。

事件:

  • 当事件发生时,发布者“触发事件”,然后执行订阅者提交的所有事件。
  • 调用(invoke)或触发(fire)事件的术语。当事件被触发时,所有注册到它的方法都会被依次调用。

事件是一种特殊的多播委托。(术语定义来源:Microsoft 开发文档:事件)
事件是类或结构的成员。

事件处理程序:

  • 回调方法。由订阅者提供的方法称为回调方法,因为发布者通过执行这些方法来“往回调用订阅者的方法”。它们是为处理事件而调用的代码。
  • 由订阅者注册到事件的行为,在发布者出发事件时执行。

(七)CSharp-CSharp图解教程版-事件

事件包含了一个私有的委托。

(七)CSharp-CSharp图解教程版-事件

有关事件的私有委托:

  • 事件提供了对它的私有控制委托的结构化访问。也就是说,你无法直接访问委托。
  • 事件中可用的操作比委托要少,对于事件我们只可以添加、删除或者调用事件处理程序。
  • 事件被触发时,它调用委托来依次调用调用列表中的方法。

图15-3演示:

(七)CSharp-CSharp图解教程版-事件

  • Incrementer 定义了一个 CountedADozen 事件。
  • 订阅者类 Dozens 和 SomeItherClass 各有一个注册到 CountedADozen 事件的事件处理程序。
  • 每当触发事件时,都会调用这些处理程序。

二、源代码组件概览

源代码组件:

  • 委托类型声明: 事件和事件处理程序必须有共同的签名和返回类型,它们通过委托类型进行描述。
  • 事件处理程序声明: 订阅者类中会在事件触发时执行的方法声明。它们不一定是显式命名的方法,还可以是匿名方法或 Lambda 表达式。
  • 事件声明: 发布者类必须声明一个订阅者可以注册的事件成员。当类声明的事件为 public 时,称为发布了事件。
  • 事件注册: 订阅者必须注册事件才能在事件被触发时得到通知。这是将事件处理程序与事件相连的代码。
  • 触发事件的代码: 发布者类中的”触发“事件并导致调用注册的所有事件处理器的代码。

(七)CSharp-CSharp图解教程版-事件

三、声明事件

public event EventHandler CountedADpzen;

//声明多个事件
public event EventHandler MyEvent1,MyEvent2,OtherEvent;

//静态事件
public static event EventHandler CountedADozen;

事件是类或结构的成员。
由于事件是成员:

  • 我们不能在一段可执行代码中声明事件;
  • 它必须声明在类或结构中,和其他成员一样。

事件成员被隐式自动初始化为 null;

四、订阅事件

订阅者向事件添加事件处理程序。

  • 使用 += 运算符来为事件添加事件处理程序。

  • 事件处理程序的规范可以是以下任意一种:文章来源地址https://www.toymoban.com/news/detail-478642.html

    • 实例方法的名称;
    • 静态方法的名称;
    • 匿名方法;
    • Lambda 表达式。

到了这里,关于(七)CSharp-CSharp图解教程版-事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包