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 l’instance de délégué à n’importe quelle méthode qui a une signature et un type de retour compatibles. Vous pouvez invoquer (ou appeler) la méthode via 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 essentiellement des méthodes que vous appelez par le biais de délégués. Lorsque vous créez une méthode personnalisée, une classe telle qu’un contrôle Windows peut appeler votre méthode lorsqu’un certain événement se produit.
L’exemple suivant montre une déclaration de délégué :
public delegate int PerformCalculation(int x, int y);
Vous pouvez affecter n’importe quelle méthode à partir de n’importe quelle classe ou struct accessible qui correspond au type délégué au délégué. La méthode peut être statique ou une méthode d’instance. La flexibilité vous permet de modifier par programmation les appels de méthode ou de brancher un nouveau code dans des classes existantes.
Notes
Dans le contexte de la surcharge de méthode, la signature d’une méthode n’inclut pas la valeur de retour. Cependant, dans le contexte des délégués, la signature inclut la valeur de retour. En d’autres termes, une méthode doit avoir un type de retour compatible comme type de retour déclaré par le délégué.
La possibilité de faire référence à une méthode en tant que paramètre rend les délégués idéaux pour définir des méthodes de rappel. Vous pouvez écrire une méthode qui compare deux objets dans votre application. La méthode peut ensuite être utilisée dans un délégué pour un algorithme de tri. Étant donné que le code de comparaison est distinct de la bibliothèque, la méthode de tri peut être plus générale.
Les pointeurs de fonction prennent en charge des scénarios similaires, dans lesquels vous avez besoin de plus de contrôle sur la convention d'appel. Le code associé à un délégué est appelé à l’aide d’une méthode virtuelle ajoutée à un type délégué. Lorsque vous travaillez avec des pointeurs de fonction, vous pouvez spécifier différentes conventions.
Explorer les caractéristiques des délégués
Les délégués ont les caractéristiques suivantes :
- 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 enchaînés, par exemple en appelant plusieurs méthodes sur un seul événement.
- Les méthodes n’ont pas besoin de correspondre exactement au type de délégué. Pour plus d’informations, consultez Utilisation de la variance dans les délégués.
- Les expressions lambda sont un moyen plus concis d’écrire des blocs de code inline. Les expressions lambda (dans certains contextes) sont compilées en types délégués. Pour plus d’informations sur les expressions lambda, consultez expressions lambda.
Consulter les articles connexes
Pour plus d’informations sur les délégués, consultez les articles suivants :
Accéder à la spécification du langage C#
La spécification du langage est la source définitive de la syntaxe C# et de l’utilisation. Pour plus d’informations, consultez Délégués dans la Spécification du langage C#.