The exact situation for delegates is, passing the method as a argument.
public delegate int DelegateAdd(int a,int b);
class MyClass
{
static int function_values(int val1,int val2)
{
return val1+val2;
}
static void Main(string[] args)
{
//Creating the Delegate Instance
Delegate_Add delObj = new Delegate_Add(DelegateAdd);
Console.Write("Please Enter Values");
int v1 = Int32.Parse(Console.ReadLine());
int v2 = Int32.Parse(Console.ReadLine());
//use a delegate for processing
int Result = delObj(v1,v2);
Console.WriteLine ("Result :"+res);
Console.ReadLine();
}
}