首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 事件存取器:add/remove 自定義儲存、Control 基類鍵值對映射、大量事件記憶體優化

     編輯:關於C語言

當事件數量大、儲存開銷高時,自定義存取器將處理器存入私有鍵值對映射而非個別欄位。

存取器類型

  • add:訂閱時執行,參數 value 為處理器。
  • remove:取消時執行,參數 value 為處理器。

隱藏參數 value,區域變數不可命名為 value。

Control 基類實例


class Control : Component {
    static readonly object MouseDownKey = new object();
    static readonly object MouseUpKey = new object();

    protected Delegate GetHandler(object key) { ... }
    protected void AddHandler(object key, Delegate h) { ... }
    protected void RemoveHandler(object key, Delegate h) { ... }

    public event MouseEventHandler MouseDown {
        add { AddHandler(MouseDownKey, value); }
        remove { RemoveHandler(MouseDownKey, value); }
    }
    public event MouseEventHandler MouseUp {
        add { AddHandler(MouseUpKey, value); }
        remove { RemoveHandler(MouseUpKey, value); }
    }
}

未訂閱的事件零記憶體開銷,只有實際訂閱時才在映射表建立條目。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved