Delegates in C#

A delegate in C# is similar to a function pointer in C or C++.

A delegate is a type that references a method.
Once a delegate is assigned a method, it behaves exactly like that method.
The delegate method can be used like any other method, with parameters and a return value.

delegate result-type identifier ([parameters]);

result-type: The result type, which matches the return type of the function.
identifier: The delegate name.
parameters: The Parameters, that the function takes.

An interesting and useful property of a delegate is that it does not know or care about the class of the object that it references.
Any object will do; all that matters is that the method's argument types and return type match the delegate's.
This makes delegates perfectly suited for "anonymous" invocation.

A sample delegate program:

using System;

namespace forgetCode
    delegate void Mydel(string s);

    class program
        public static void method1(string a)
            Console.WriteLine("Hi," + a);

        public static void method2(string b)
            Console.WriteLine("Hello," + b);

        public static void Main()

            Mydel a, b;

            a = new Mydel(method1);
            b = new Mydel(method2);

            a("Forget Code");
            b("Forget Code");


Hi, Forget Code
Hello, Forget Code