Délégués (guide de programmation C#)
Un délégué est un type qui définit une signature de méthode. Lorsque vous instanciez un délégué, vous pouvez associer son instance à toute méthode ayant une signature compatible. Vous pouvez appeler la méthode par le biais d'une instance déléguée.
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.
Notes
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, 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 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 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 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
Quand utiliser des délégués au lieu d'interfaces (Guide de programmation C#)
Délégués avec méthodes nommées et méthodes anonymes (Guide de programmation C#)
Utilisation de la variance dans les délégués (C# et Visual Basic)
Comment : combiner des délégués (délégués multicast) (Guide de programmation C#)
Comment : déclarer, instancier et utiliser un délégué (Guide de programmation C#)
Spécification du langage C#
Pour plus d'informations, consultez 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#)