For fast coding and clarity purposes C# contains some helpers. This example introduces four ways to perform subscribe to events: by adding new delegate pointing to method, doing the same but with Method group, by creating anonymous delegate or with lambda expressions.

class MessageService
{
    public event EventHandler ReceivedMessage;

    void OnReceivedMessage()
    {
        if (ReceivedMessage != null)
            ReceivedMessage(this, EventArgs.Empty);
    }

    public void Receive()
    {
        OnReceivedMessage();
    }
}

class Program
{
    private static MessageService service = new MessageService();

    static void Main(string[] args)
    {
        service.ReceivedMessage += new EventHandler(service_ReceivedMessage);
        service.ReceivedMessage += service_ReceivedMessage2;
        service.ReceivedMessage += delegate(object s, EventArgs e)
        {
            Console.WriteLine("[Delegate] Received");
        };
        service.ReceivedMessage += (s, e) => Console.WriteLine("[Lambda] Received");

        Console.WriteLine("Press any key to send message!");
        Console.ReadKey();

        service.Receive();

        Console.ReadKey();
    }

    static void service_ReceivedMessage(object sender, EventArgs e)
    {
        Console.WriteLine("[Method] Received");
    }

    static void service_ReceivedMessage2(object sender, EventArgs e)
    {
        Console.WriteLine("[Method group] Received");
    }
}
Press any key to send message!
[Method] Received
[Method group] Received
[Delegate] Received
[Lambda] Received