什么是事件?
这几天在学C#,主要就是看MSDN,事件的用法已经会了,可事件的机制总是看不明白,劳烦大家帮我解释一下下面这个事件是如何定义、触发的,每行代码背后的含义是什么,谢谢!
namespace TestCollections
{
// A delegate type for hooking up change notifications.
public delegate void ChangedEventHandler(object sender, System.EventArgs e);
// A class that works just like ArrayList, but sends event
// notifications whenever the list changes.
public class ListWithChangedEvent : System.Collections.ArrayList
{
// An event that clients can use to be notified whenever the
// elements of the list change.
public event ChangedEventHandler Changed;
// Invoke the Changed event; called whenever list changes
protected virtual void OnChanged(System.EventArgs e)
{
if (Changed != null)
{
Changed(this, e);
}
}
// Override some of the methods that can change the list;
// invoke event after each
public override int Add(object value)
{
int i = base.Add(value);
OnChanged(System.EventArgs.Empty);
return i;
}
public override void Clear()
{
base.Clear();
OnChanged(System.EventArgs.Empty);
}