Delegate, instruction
Permet de déclarer un délégué. Un délégué est un type référence qui fait référence à une méthode Shared d'un type ou à une méthode d'instance d'un objet. Les procédures présentant des paramètres et types de retour assortis peuvent être utilisées pour créer une instance de cette classe de délégué. La procédure peut ensuite être appelée ultérieurement par l'intermédiaire de l'instance déléguée.
[ <attrlist> ] [ accessmodifier ] _
[ Shadows ] Delegate [ Sub | Function ] name [( Of typeparamlist )] [([ parameterlist ])] [ As type ]
Composants
Terme |
Définition |
attrlist |
Facultatif. Liste des attributs s'appliquant à ce délégué. Les attributs multiples sont séparés par des virgules. Vous devez placer le Liste d'attributs (Visual Basic) entre des signes "inférieur à" et "supérieur à" ("<" et ">"). |
accessmodifier |
Facultatif. Spécifie le code pouvant accéder à ce délégué. Il peut s'agir de l'une des valeurs suivantes :
Vous pouvez spécifier Protected Friend pour permettre l'accès à partir du code dans la classe du délégué, dans une classe dérivée ou dans le même assembly. |
Shadows |
Facultatif. Indique si ce délégué redéclare et masque un élément de programmation de même nom ou un ensemble d'éléments surchargés, dans une classe de base. Vous pouvez occulter tout type d'élément déclaré par un autre type. Un élément occulté n'est pas disponible à partir de la classe dérivée qui l'occulte, sauf à partir de l'emplacement où l'élément d'occultation est inaccessible. Par exemple, si un élément Private occulte un élément de classe de base, le code qui n'est pas autorisé à accéder à l'élément Private accède à la place à l'élément de classe de base. |
Sub |
Facultatif, mais Sub ou Function doit être indiqué. Déclare cette procédure en tant que procédure Sub de délégué qui ne retourne pas de valeur. |
Function |
Facultatif, mais Sub ou Function doit être indiqué. Déclare cette procédure en tant que procédure Function de délégué qui retourne une valeur. |
name |
Obligatoire. Nom du type délégué. Ce nom respecte les conventions standard d'affectation de noms aux variables. |
typeparamlist |
Facultatif. Liste de paramètres de type pour ce délégué. Les paramètres de type, lorsqu'il y en a plusieurs, sont séparés par des virgules. Éventuellement, chaque paramètre de type peut être déclaré variant à l'aide des modificateurs génériques In et Out. Vous devez mettre la Liste de types (Visual Basic) entre parenthèses et l'introduire avec le mot clé Of. |
parameterlist |
Facultatif. Liste des paramètres qui sont passés à la procédure lorsqu'elle est appelée. Vous devez mettre la Liste de paramètres (Visual Basic) entre parenthèses. |
type |
Requis si vous spécifiez une procédure Function. Type de données de la valeur de retour. |
Notes
L'instruction Delegate définit les types de paramètres et de retour d'une classe déléguée. Les procédures présentant des paramètres et types de retour assortis peuvent être utilisées pour créer une instance de cette classe de délégué. La procédure peut ensuite être appelée ultérieurement par l'intermédiaire de l'instance déléguée, en appelant la méthode Invoke du délégué.
Les délégués peuvent être déclarés au niveau de l'espace de noms, du module, de la classe ou de la structure, mais pas dans une procédure.
Chaque classe déléguée définit un constructeur auquel les caractéristiques d'une méthode objet sont passées. Un argument à un constructeur délégué doit correspondre à une référence à une méthode ou à une expression lambda.
Pour spécifier une référence à une méthode, utilisez la syntaxe suivante :
AddressOf [expression.]methodname
Le type de l'expression au moment de la compilation doit correspondre au nom d'une classe ou d'une interface qui contient une méthode avec le nom spécifié dont la signature correspond à celle de la classe déléguée. La méthode methodname peut être soit une méthode partagée, soit une méthode d'instance. methodname n'est pas facultatif, même si vous créez un délégué pour la méthode par défaut de la classe.
Pour spécifier une expression lambda, utilisez la syntaxe suivante :
Function ([parm As type, parm2 As type2, ...]) expression
La signature de la fonction doit correspondre à celle du type délégué. Pour plus d'informations sur les expressions lambda, consultez Expressions lambda (Visual Basic).
Pour plus d'informations sur les délégués, consultez Délégués (Visual Basic).
Exemple
L'exemple suivant utilise l'instruction Delegate pour déclarer un délégué afin de fonctionner sur deux nombres et de retourner un nombre. La méthode DelegateTest accepte une instance d'un délégué de ce type et s'en sert pour fonctionner sur deux nombres.
Delegate Function MathOperator(
ByVal x As Double,
ByVal y As Double
) As Double
Function AddNumbers(
ByVal x As Double,
ByVal y As Double
) As Double
Return x + y
End Function
Function SubtractNumbers(
ByVal x As Double,
ByVal y As Double
) As Double
Return x - y
End Function
Sub DelegateTest(
ByVal x As Double,
ByVal op As MathOperator,
ByVal y As Double
)
Dim ret As Double
ret = op.Invoke(x, y) ' Call the method.
MsgBox(ret)
End Sub
Protected Sub Test()
DelegateTest(5, AddressOf AddNumbers, 3)
DelegateTest(9, AddressOf SubtractNumbers, 3)
End Sub
Voir aussi
Tâches
Comment : utiliser une classe générique (Visual Basic)
Référence
Opérateur AddressOf (Visual Basic)
In (modificateur générique) (Visual Basic)
Out (modificateur générique) (Visual Basic)
Concepts
Types génériques en Visual Basic (Visual Basic)