What is a delegate?
A delegate is similar to a class that is used for storing the reference to a method and invoking that method at runtime, as needed. A delegate can hold the reference of only those methods whose signatures are similar as that of the delegate. Some of the instance of delegates is type-safe functions, pointers, or callbacks.