Events & Delegates
A delegate is a reference type derived from the System.Delegate class which can be used to call methods of same matching signature.
As you all know signature of a method is defined by the number, datatypes of the parameters and also the return type of the method.If you are familiar with C/C++, you can consider that, these delegates are similar to the functional pointers.
Events are the actions performed when something is triggered like a button's button_Click event or a text box's text_Changed event.
It so happens that, the Events in .NET are implemented using the delegates.Actually these both are tightly coupled entities, i.e. delegates are used to handle events.
Here publishing class is the one which defines the delegate, and all subscribing classes are the one's which implement the delegate.
When the publishing class raises an event, all the subscribed classes are notified, and the methods are invoked through the delegate.