class Control: Component
{
// Unique keys for events
static readonly object mouseDownEventKey = new object();
static readonly object mouseUpEventKey = new object();
// Return event handler associated with key
protected Delegate GetEventHandler(object key) {...}
// Add event handler associated with key
protected void AddEventHandler(object key, Delegate handler) {...}
// Remove event handler associated with key
protected void RemoveEventHandler(object key, Delegate handler) {...}
// MouseDown event
public event MouseEventHandler MouseDown {
add { AddEventHandler(mouseDownEventKey, value); }
remove { RemoveEventHandler(mouseDownEventKey, value); }
}
// MouseUp event
public event MouseEventHandler MouseUp {
add { AddEventHandler(mouseUpEventKey, value); }
remove { RemoveEventHandler(mouseUpEventKey, value); }
}
// Invoke the MouseUp event
protected void OnMouseUp(MouseEventArgs args) {
MouseEventHandler handler;
handler = (MouseEventHandler)GetEventHandler(mouseUpEventKey);
if (handler != null)
handler(this, args);
}
}
Control 类实现了事件的内部存储机制。AddEventHandler 方法将委托值与键关联,GetEventHandler 方法返回当前与键关联的委托,而 RemoveEventHandler 方法将委托作为指定事件的事件处理程序移除。据推测,底层存储机制的设计使得将空委托值与键关联起来是没有成本的,因此未处理的事件不会消耗存储空间。
这段代码和上一段中的解释对我来说没有任何意义。知道这个内部存储机制是什么吗?在上面的段落中,将代表与卑鄙的人联系起来是什么意思?