• 第十一章 事件


    1. 概述

      类型之所以能提供事件通知功能,是因为类型维护了一个已登记方法的列表。事件发生后,类型将通知列表中所有已登记的方法。

    2. 名词解释

    3. 主要内容

      3.1 设计要公开事件的类型

        ① 第一步:定义类型来容纳所有需要发送给事件通知接收者的附加信息。(EventArgs)

        ② 第二步:定义事件成员。(event)

        ③ 第三步:定义负责引发事件的方法来通知事件的登记对象。(protected virtual ...)(考虑线程安全)

        ④ 第四步:定义方法将输入转化为期望事件。

      3.2 编译器如何实现事件

        一条事件定义语句,在编译时会被转化为以下3个构造:

        ① 一个被初始化为null的私有委托字段

        ② 一个公共add_Xxx方法(Xxx是事件名)

        ③ 一个公共remove_Xxx方法(Xxx是事件名)

      3.3 设计侦听事件的类型

    internal sealed class Fax
    {
        public Fax(MailManager mm)
        {
            mm.NewMail += FaxMsg;
        }
    
        //新邮件到达时,MailManager将调用这个方法
        private void FaxMsg(Object sender, NewMailEventArgs e)
        {
            //...
        }
    
        //
        public void Unregister(MailManager mm)
        {
            mm.NewMail -= FaxMsg;
        }
    }        

      3.4 显式实现事件

        C#编译器允许类的开发人员显示实现一个事件,使开发人员能够控制add和remove方法操纵回调委托的方式。

    4. 总结

         事件是类型成员中较难理解的一种类型。主要是用的较少,多用用自然就理解深刻了。

  • 相关阅读:
    网络监控之三:ifstat、iftop
    JavaScript框架比较
    Enterprise Architect
    设计模式:Abstract Factory和Builder(转)
    Flexibility Pattern架构和设计模式
    Struts的html:errors的用法
    更好的浏览器判定
    纯CSS细线伪表格
    javascript 随机数
    一些javascript题目
  • 原文地址:https://www.cnblogs.com/stone_lv/p/4316036.html
Copyright © 2020-2023  润新知