Partager via


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

Mise à jour : novembre 2007

Un délégué est un type qui définit une signature de méthode et peut être associé à toute méthode avec une signature compatible. Vous pouvez appeler la méthode par le biais du 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 issue d'une classe ou d'un struct accessible qui correspond à la signature du délégué, composée du type et des paramètres de retour peut être assignée au délégué. La méthode peut être une méthode statistique ou une méthode d'instance. Cela permet de modifier par programme les appels de méthode, mais également d'insérer du nouveau code dans les classes existantes. Dans la mesure où vous connaissez la signature du délégué, vous pouvez assigner votre propre méthode.

Remarque :

Dans le contexte de la surcharge des 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 la même valeur de retour que le délégué.

Cette capacité à faire référence à une méthode comme à un paramètre fait des délégués les instruments idéaux pour définir des méthodes de rappel. Par exemple, un algorithme de tri peut se voir transmettre une référence à la méthode qui compare deux objets. Séparer le code de comparaison permet d'écrire l'algorithme d'une manière 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 fonction C++, mais ils offrent la cohérence des types.

  • 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 à la signature du délégué. Pour plus d'informations, consultez Covariance and ContravarianceCovariance et contravariance dans les délégués (Guide de programmation C#).

  • 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 délégués. Ces fonctionnalités sont maintenant 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, consultez les sections suivantes dans Spécifications du langage C#.

  • 1.11 Délégués

  • 4.2.6 Types délégués

  • 7.5.5.3 Appels de délégué

  • 15 Délégués

Voir aussi

Concepts

Guide de programmation C#

Référence

Événements (Guide de programmation C#)

Delegate