Summary — an event pseudo field is a bunch  of callbacks registered (with the host object) to be notified/invoked.
Each callback is a 2-pointer thingy — an enhanced functor known as a delegate instance. First pointer references the “receiver object”.
 an ordered list
Suppose an instance of class Thermometer has a bunch of callback listener Objects each registered with this thermometer. When a new temperature is produced, all these listeners are invoked when runtime executes MyEvent(…args). That’s the requirement. C# does it with event pseudo-fields.
Under the hood, this thermometer has a delegate Object enclosing an invocation list. Each node on the list holds 2 pointers to a) the (non-static) method and also to b) the object to call on. Good solution, so what’s the “event” field?
Answer — the event pseudo-field is a wrapper over the hidden delegate field. Like a property pseudo-field, an event defines a pair of add/remove methods. In the case of add(), “myEvent += d1” simply calls “_hiddenDlgField += d1″
http://www.yoda.arachsys.com/csharp/events.html explains why exposing the delegate field is a bad idea.
 This is the most common usage of delegate. Alternatively you can also register a static method as a callback.