I'm feeling nostalgic...
Named Method
class Program
{
delegate int PerformCalculation(int x, int y);
public static int Add(int x, int y)
{
return x + y;
}
public static int Multiply(int x, int y)
{
return x * y;
}
static void Main(string[] args)
{
int x = 2;
int y = 3;
DelegatesWithNamedMethods(x, y);
}
private static void DelegatesWithNamedMethods(int x, int y)
{
var adding = new PerformCalculation(Add);
var multiplying = new PerformCalculation(Multiply);
Console.WriteLine("Delegates with named methods");
Console.WriteLine($"{x} + {y} = {adding(x, y)}");
Console.WriteLine($"{x} * {y} = {multiplying(x, y)}");
}
}
Anonymous Method
class Program
{
delegate int PerformCalculation(int x, int y);
static void Main(string[] args)
{
int x = 2;
int y = 3;
DelegatesWithAnonymousMethods(x, y);
}
private static void DelegatesWithAnonymousMethods(int x, int y)
{
var adding = new PerformCalculation(delegate(int one, int two)
{
return one + two;
});
var multiplying = new PerformCalculation(delegate(int one, int two)
{
return one * two;
});
Console.WriteLine("Delegates with anonymous methods");
Console.WriteLine($"{x} + {y} = {adding(x, y)}");
Console.WriteLine($"{x} * {y} = {multiplying(x, y)}");
}
}
Lambda Expression
class Program
{
delegate int PerformCalculation(int x, int y);
static void Main(string[] args)
{
int x = 2;
int y = 3;
DelegatesWithLambdaExpressions(x, y);
}
private static void DelegatesWithLambdaExpressions(int x, int y)
{
var adding = new PerformCalculation((one, two) => one + two);
var multiplying = new PerformCalculation((one, two) => one * two);
Console.WriteLine("Delegates with lambda expressions");
Console.WriteLine($"{x} + {y} = {adding(x, y)}");
Console.WriteLine($"{x} * {y} = {multiplying(x, y)}");
}
}