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;同一个类型的大量事件高效管理;

  • 相关阅读:
    【mybatis】02-spring集成
    【Spring】xxAware
    【性能调优】Arthas
    【算法】其他算法(字典树Trie等)
    【多线程】JDK源码类图
    POJ-1251-Jungle Roads
    Prim算法模板
    敌兵布阵-线段树(1)
    hdu-1541-Stars (树状数组)
    母牛生小牛
  • 原文地址:https://www.cnblogs.com/newlifechou/p/8166234.html
Copyright © 2011-2022 走看看