C# Delegate technique
Delegate is one of the fantastic tool & technique in C#.NET. Using deleagte technique the following benefits could be avaialed
- One can define a method without name (Anonymous Method)
- One can pass a Method as argument to another Method
- Can join (or Add) two or more non-returnable methods methods
- Core to combine event and event actions
Here is a simple example that demonstrates how delegates are being used in C#
Delegate used with instance method, static method, general named method and Anonymous method
Delegate Example
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public delegate int DelType(int n);
namespace DelDemo
{
class Num
{
int a;
public Num() { a = 0; }
public Num(int n) { a = n; }
public void Disp() { Console.WriteLine("Data is " + a); }
public int Power(int n) // Instance method
{
int r = 1;
while ( n> 0)
{
r = r * a;
n--;
}
return r;
}
static public int Rev(int t) // Static method
{
int r = 0;
while (t > 0)
{
r = (r * 10) + (t % 10);
t = t / 10;
}
return r;
}
}
class Program
{
static int Fact(int n) // Named method
{
int f=1;
while(n>1)f*=n--;
return f;
}
static void Main(string[] args)
{
DelType act = delegate(int n) //Anonymous method
{
int s = 0;
while (n > 0)
{
s = s + (n % 10);
n = n / 10;
}
return s;
};
Console.WriteLine("Sum of digit is "+act(234));
Num p = new Num(5);
act = Num.Rev; // Using static method
Console.WriteLine("Reverse number is " + act(567));
act = Fact; // Using general named method
Console.WriteLine("Factorial is " + act(5));
act = p.Power; //Using instance method
Console.WriteLine("Power is " + act(3));
Console.ReadKey();
}
}
}