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

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.A delegate is a type that represents references to methods with a particular parameter list and return type. Lorsque vous instanciez un délégué, vous pouvez associer son instance à toute méthode ayant une signature et un type de retour compatibles.When you instantiate a delegate, you can associate its instance with any method with a compatible signature and return type. Vous pouvez appeler la méthode par le biais l'instance de délégué.You can invoke (or call) the method through the delegate instance.

Les délégués sont utilisés pour passer des méthodes comme arguments à d'autres méthodes.Delegates are used to pass methods as arguments to other methods. Les gestionnaires d'événements sont tout simplement des méthodes appelées par le biais de délégués.Event handlers are nothing more than methods that are invoked through delegates. 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.You create a custom method, and a class such as a windows control can call your method when a certain event occurs. L'exemple suivant illustre une déclaration de délégué :The following example shows a delegate declaration:

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é.Any method from any accessible class or struct that matches the delegate type can be assigned to the delegate. La méthode peut être une méthode d'instance ou statique.The method can be either static or an instance method. Cela permet de modifier par programme les appels de méthode, mais également d'insérer du nouveau code dans les classes existantes.This makes it possible to programmatically change method calls, and also plug new code into existing classes.

Notes

Dans le contexte de surcharge de méthodes, la signature d'une méthode n'inclut pas la valeur de retour.In the context of method overloading, the signature of a method does not include the return value. Mais dans le contexte des délégués, la signature inclut la valeur de retour.But in the context of delegates, the signature does include the return value. En d'autres termes, une méthode doit avoir le même type de retour que le délégué.In other words, a method must have the same return type as the delegate.

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.This ability to refer to a method as a parameter makes delegates ideal for defining callback methods. Par exemple, une référence à une méthode qui compare deux objets peut être passée comme argument à un algorithme de tri.For example, a reference to a method that compares two objects could be passed as an argument to a sort algorithm. É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.Because the comparison code is in a separate procedure, the sort algorithm can be written in a more general way.

Vue d'ensemble des déléguésDelegates Overview

Les délégués ont les propriétés suivantes :Delegates have the following properties:

  • Les délégués sont comparables aux pointeurs de fonction C++, sauf que les délégués sont totalement orientés objet, et contrairement aux pointeurs C++ vers les fonctions membres, les délégués encapsulent une instance d’objet et une méthode.Delegates are similar to C++ function pointers, but delegates are fully object-oriented, and unlike C++ pointers to member functions, delegates encapsulate both an object instance and a method.

  • Les délégués permettent aux méthodes d'être transmises comme des paramètres.Delegates allow methods to be passed as parameters.

  • Les délégués peuvent être utilisés pour définir des méthodes de rappel.Delegates can be used to define callback methods.

  • Les délégués peuvent être chaînés ; par exemple, plusieurs méthodes peuvent être appelées sur un seul événement.Delegates can be chained together; for example, multiple methods can be called on a single event.

  • Les méthodes ne doivent pas correspondre exactement au type du délégué.Methods do not have to match the delegate type exactly. Pour plus d’informations, consultez Utilisation de la variance dans les délégués.For more information, see Using Variance in Delegates.

  • 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# version 2.0 introduced the concept of Anonymous Methods, which allow code blocks to be passed as parameters in place of a separately defined method. C# 3.0 a introduit les expressions lambda comme un moyen plus concis d’écrire des blocs de code inline.C# 3.0 introduced lambda expressions as a more concise way of writing inline code blocks. Les méthodes anonymes et les expressions lambda (dans certains contextes) sont toutes deux compilées en types de délégué.Both anonymous methods and lambda expressions (in certain contexts) are compiled to delegate types. Ces fonctionnalités sont désormais conjointement désignées par l’expression « fonctions anonymes ».Together, these features are now known as anonymous functions. Pour plus d’informations sur les expressions lambda, consultez Fonctions anonymes.For more information about lambda expressions, see Anonymous Functions.

Dans cette sectionIn This Section

Spécification du langage C#C# Language Specification

Pour plus d’informations, consultez Délégués dans la Spécification du langage C#.For more information, see Delegates in the C# Language Specification. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.The language specification is the definitive source for C# syntax and usage.

Delegates, Events, and Lambda Expressions (Délégués, événements et expressions lambda) dans C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmersDelegates, Events, and Lambda Expressions in 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.0Delegates and Events in Learning C# 3.0: Master the fundamentals of C# 3.0

Voir aussiSee also