Partager via


Délégués (guide de programmation C#)

Un délégué est un type qui représente des références aux méthodes avec une liste de paramètres et un type de retour particuliers. Lorsque vous instanciez un délégué, vous pouvez associer son instance à toute méthode ayant une signature et un type de retour compatibles. Vous pouvez appeler la méthode par le biais l'instance de délégué.

Les délégués sont utilisés pour passer des méthodes comme arguments à d'autres méthodes. Les gestionnaires d'événements sont tout simplement des méthodes appelées par le biais de délégués. Vous créez une méthode personnalisée, et une classe telle qu'un contrôle Windows peut appeler votre méthode lorsqu'un certain événement se produit. L'exemple suivant illustre une déclaration de délégué :

    public delegate int PerformCalculation(int x, int y);

Toute méthode de n'importe quelle classe ou structure accessible qui correspond au type de délégué, peut être assignée au délégué. La méthode peut être une méthode d'instance ou statique. Cela permet de modifier par programme les appels de méthode, mais également d'insérer du nouveau code dans les classes existantes.

Notes

Dans le contexte de surcharge de méthodes, la signature d'une méthode n'inclut pas la valeur de retour.Mais dans le contexte des délégués, la signature inclut la valeur de retour.En d'autres termes, une méthode doit avoir le même type de retour que le délégué.

Cette capacité à faire référence à une méthode en tant que paramètre fait des délégués les instruments idéaux pour définir des méthodes de rappel. Par exemple, une référence à une méthode qui compare deux objets peut être passée comme argument à un algorithme de tri. Étant donné que le code de comparaison est dans une procédure distincte, l'algorithme de tri peut être écrit de façon plus générale.

Vue d'ensemble des délégués

Les délégués ont les propriétés suivantes :

  • Les délégués sont semblables aux pointeurs de fonction C++, mais ils sont de type sécurisé.

  • Les délégués permettent aux méthodes d'être transmises comme des paramètres.

  • Les délégués peuvent être utilisés pour définir des méthodes de rappel.

  • Les délégués peuvent être chaînés ; par exemple, plusieurs méthodes peuvent être appelées sur un seul événement.

  • Les méthodes ne doivent pas correspondre exactement au type du délégué. Pour plus d'informations, consultez Utilisation de la variance dans les délégués (C# et Visual Basic).

  • C# version 2.0 a introduit le concept de Méthodes anonymes, qui permet de passer des blocs de code en tant que paramètres à la place d'une méthode définie séparément. C# 3.0 a introduit les expressions lambda comme un moyen plus concis d'écrire des blocs de code inline. Les méthodes anonymes et les expressions lambda (dans certains contextes) sont toutes deux compilées en types de délégué. Ces fonctionnalités sont désormais conjointement désignées par l'expression « fonctions anonymes ». Pour plus d'informations sur les expressions lambda, consultez Fonctions anonymes (Guide de programmation C#).

Dans cette section

Spécification du langage C#

Pour plus d'informations, voir la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Chapitres proposés

Delegates, Events, and Lambda Expressions dans C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers

Delegates and Events dans Learning C# 3.0: Master the fundamentals of C# 3.0

Voir aussi

Référence

Événements (Guide de programmation C#)

Delegate

Concepts

Guide de programmation C#