zoukankan      html  css  js  c++  java
  • [Clr via C#读书笔记]Cp11事件

    Cp11事件

    类型之所以提供事件通知功能,是因为类型维护了一个已登记方法的列表,事件发生后,类型将通知列表登记的所有方法;
    事件模型建立在委托的基础上。委托是调用回调方法的一种类型安全的方式。

    设计事件类型

    定义事件参数

    EventArgs

    定义事件成员

    public event 委托类型<事件参数> 事件名称;
    sender之所用Object,一个是考虑继承,一个是考虑灵活;
    返回值是void;

    定义负责引发事件的方法来通知事件的登记对象

    protected virtual void OnNewMain(参数 e)
    {
        var temp=interlocked.CompareExchange(ref NewMail,null,null);
        //考虑线程安全,这里需要仔细考虑
        //事件主要在单线程中使用,所以线程安全并不是一个太大的问题
        if(temp!=null)temp(this,e)
    }
    

    触发事件

    在需要的地方调用触发事件的方法。

    编译器如何实现事件

    一个委托,一个add,一个remove

    设计侦听事件类型

    显示实现事件

    事件集合,key-value;同一个类型的大量事件高效管理;

  • 相关阅读:
    51nod乘积之和
    Dell服务器安装OpenManage(OMSA)
    Nginx反向代理PHP
    搭建haproxy
    108. Convert Sorted Array to Binary Search Tree
    60. Permutation Sequence
    142. Linked List Cycle II
    129. Sum Root to Leaf Numbers
    118. Pascal's Triangle
    26. Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/newlifechou/p/8166234.html
Copyright © 2011-2022 走看看