The delegate is a reference type data type that defines the method signature. You can define variables of delegate, just like other data type, that can refer to any method with the same signature as the delegate.There are three steps involved while working with delegates:Declare a delegateSet a target methodInvoke a delegate
public delegate void MyDelegate(string msg); // declare a delegate // set target method MyDelegate del = new MyDelegate(MethodA); // or MyDelegate del = MethodA; // or set lambda expression MyDelegate del = (string msg) => Console.WriteLine(msg); // target method static void MethodA(string message) { Console.WriteLine(message); }public delegate void MyDelegate(string msg); // declare a delegate // set target method MyDelegate del = new MyDelegate(MethodA); // or MyDelegate del = MethodA; // or set lambda expression MyDelegate del = (string msg) => Console.WriteLine(msg); // target method static void MethodA(string message) { Console.WriteLine(message); }
public delegate void MyDelegate(string msg); //declaring a delegate class Program { static void Main(string[] args) { MyDelegate del = ClassA.MethodA; del("Hello World"); del = ClassB.MethodB; del("Hello World"); del = (string msg) => Console.WriteLine("Called lambda expression: " + msg); del("Hello World"); } } class ClassA { static void MethodA(string message) { Console.WriteLine("Called ClassA.MethodA() with parameter: " + message); } } class ClassB { static void MethodB(string message) { Console.WriteLine("Called ClassB.MethodB() with parameter: " + message); } }