Anonymous methods are methods that are not actually defined, therefore, only suited for one-time use. Anonymous methods are targeted for delegates. The following shows the syntax of an anonymous method.

delegate (parameters)
{
    //Code for the anonymous method
};

For example, we can define a delegate, create an object of that delegate, and assign the anonymous method to it.

using System;

namespace AnonymousMethodsDemo
{
    public delegate void MessageDelegate(string message);

    public class Program
    {
        public static void Main()
        {
            MessageDelegate ShowMessage = new MessageDelegate(
            delegate(string message)        
            {                               
                Console.WriteLine(message); 
            }                               
            );                              

            ShowMessage("Hello World!");
        }
    }
}

Example 1 – Anonymous Method Demo

 Hello World

Here, the delegate has a return type of void, and one string parameter. When we created our delegate object, we passed an anonymous method to it. Notice that the anonymous method has also a string parameter to match its delegate. The return type is automatically detected. If no return statement was found, then it will have a return type of void. If your delegate has a return type, then your anonymous method should have a return statement returning the proper type of value. You can even simplify the code above like this:

MessageDelegate ShowMessage = delegate(string message)
                              {
                                  Console.WriteLine(message);
                              };

Anonymous methods can also be used when subscribing to events.

myClass.myEvent += delegate(string message)
                   {
                       Console.WriteLine(message);
                   };