An "event" is just a shortcut to two methods that work with a delegate - add and remove accessors . By default, the compiler makes a delegate for the event (unless you write your own accessories).
When you call someEvent += aDelegate; , you raise the add accessor event. This is usually converted by the compiler to a delegate += call for a delegate with the same signature as the event, similar to how automatic properties are automatically displayed in the support field. This is why the event looks like a delegate.
what this signature in MSDN confuses me more: public delegate void EventHandler (object sender, EventArgs e)
This signature is just the signature of the delegate. An event can, technically, use any delegate. However, by convention, it will always take two parameters: the first is the "sender" that raised the event, the second is the class that comes from EventArgs (for example, EventHandler and EventHandler<T> ).
source share