1.A delegate is a class which can hold reference to a method or a function.
2.delegate class has a signature and it can only reference those method whose signature is match with the class.
3.delegate are type-safe function pointers and callbacks.