L'ajout d'une fonction au call d'un évènement a toujours été quelque chose de laid, de difficile à lire pour quelqu'un de différent de celui qui l'a définie.

Les méthodes anonymes de c# 3.5 simplifie grandement l'écriture de ces fonctions.

Pour exemple :
Un simple évènement "OnMyEvent" qui, une foi appellé, incrémente la variable entière "NombreDeCall".

Sans les méthodes anonymes, voici ce que celà donne :

[code:c#]
event EventHandler OnMyEvent;
int NombreDeCall = 0;
public void FonctionQuelconque()
{
    OnMyEvent += new EventHandler(Program_OnMyEvent);
}

public void FonctionCallEvent()
{
    if (OnMyEvent != null)
        OnMyEvent(this, null);
}

void Program_OnMyEvent(object sender, EventArgs e)
{
    NombreDeCall++;
}
[/code]

Avec les méthodes anonymes, nous n'avons plus à décrire le prototype de la fonction "Program_OnMyEvent".
En effet, cette fonction n'ayant pour but que d'être appellé par l'évènement "OnMyEvent", le programmeur n'a aucune utilité de la nommer.

Le code devient ainsi :

[code:c#]
event EventHandler OnMyEvent;
int NombreDeCall = 0;

public void FonctionQuelconque()
{
    OnMyEvent += (sender, e) =>
    {
        NombreDeCall++;
    };

}

public void FonctionCallEvent()
{
    if (OnMyEvent != null)
        OnMyEvent(this, null);
}
[/code]

Cette méthode anonyme est écrite de la facon suivante :

[code:c#]
( liste des noms donné aux paramètres dont les types sont déduit par le compilateur ) => 
{
    //corp de la fonction
};
[/code]