A delegate is a type that represents references to methods with a particular parameter list and return type. Delegates are used to pass methods as arguments to other methods.The built in delegates are defined in such a way that they can only point to methods with specific criteria,