Delegate does the same job of function pointers. It can be viewed as the function pointers of the managed world. It simply represents the address of a function to call, along with a specific object whose method is to be called.
Many times I read the term Delegate along with the termEvent but I can not see the relationship between them. Is the Event a specific type of delegates?
Short answer: see my article on the topic. Longer answer:
Events are a pattern on top of delegates. They’re an implementation of the publisher/subscriber pattern (aka observer pattern), using delegates as the means of representing a subscription.
Whenever you see something like:
you should instead think of two methods:
All that a client from the outside can do is subscribe and unsubscribe. In particular, the client cannot raise the event themselves (without a separate method being provided for that purpose) nor can they “replace” or remove other subscriptions.