Aller au contenu

Mot‑clé delegate (avant lambda)

Contexte : Avant C# 3.0, les méthodes anonymes s’écrivaient avec le mot‑clé delegate. Elles sont encore utilisables mais largement remplacées par les lambdas.

delegate(paramètres) { instructions }
Action<string> print = delegate(string msg)
{
Console.WriteLine(msg);
};
Func<int, int> doubleIt = delegate(int x)
{
return x * 2;
};

Identique aux lambdas : elles créent des fermetures.

int factor = 3;
Func<int, int> multiply = delegate(int x) { return x * factor; };

Compatibilité avec C# 2.0 : Si vous devez écrire du code compilable sur .NET Framework 2.0, vous devez utiliser des méthodes anonymes au lieu des lambdas.

Exemple : Dans certains ASP.NET WebForms hérités, vous pouvez encore voir delegate utilisé dans les gestionnaires d’événements.