Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Utilisé pour déclarer un délégué. Un délégué est un type référence qui fait référence à une Shared
méthode d’un type ou à une méthode d’instance d’un objet. Toute procédure avec des types de paramètres et de retour correspondants peut être utilisée pour créer une instance de cette classe de délégué. La procédure peut ensuite être appelée par le biais de l’instance de délégué.
Syntaxe
[ <attrlist> ] [ accessmodifier ] _
[ Shadows ] Delegate [ Sub | Function ] name [( Of typeparamlist )] [([ parameterlist ])] [ As type ]
Pièces
Terme | Définition |
---|---|
attrlist |
Optionnel. Liste des attributs qui s’appliquent à ce délégué. Plusieurs attributs sont séparés par des virgules. Vous devez placer la liste d’attributs entre crochets< (« » et «> »). |
accessmodifier |
Optionnel. Spécifie le code qui peut accéder au délégué. Il peut s’agir de l’un des éléments suivants : - Public. Tout code pouvant accéder à l’élément qui déclare le délégué peut y accéder. - Protégé. Seul le code dans la classe du délégué ou une classe dérivée peut y accéder. - Ami. Seul le code dans le même assembly peut accéder au délégué. - Privé. Seul le code dans l’élément qui déclare que le délégué peut y accéder. - Ami protégé Seul le code dans la classe du délégué, une classe dérivée ou le même assembly peut accéder au délégué. - Privé protégé Seul le code dans la classe du délégué ou dans une classe dérivée dans le même assembly peut accéder au délégué. |
Shadows |
Optionnel. Indique que ce délégué redeclare et masque un élément de programmation nommé identiquement, ou un ensemble d’éléments surchargés, dans une classe de base. Vous pouvez masquer n’importe quel type d’élément déclaré avec n’importe quel autre type. Un élément ombré n’est pas disponible à partir de la classe dérivée qui l’ombre, à l’exception de l’endroit où l’élément d’ombre est inaccessible. Par exemple, si un Private élément ombrage un élément de classe de base, le code qui n’a pas l’autorisation d’accéder à l’élément de classe de base accède à la Private place. |
Sub |
Facultatif, mais ou Sub Function doit apparaître. Déclare cette procédure en tant que procédure déléguée Sub qui ne retourne pas de valeur. |
Function |
Facultatif, mais ou Sub Function doit apparaître. Déclare cette procédure en tant que procédure déléguée Function qui retourne une valeur. |
name |
Obligatoire. Nom du type délégué ; suit les conventions d’affectation de noms de variables standard. |
typeparamlist |
Optionnel. Liste des paramètres de type pour ce délégué. Plusieurs paramètres de type sont séparés par des virgules. Si vous le souhaitez, chaque paramètre de type peut être déclaré variant à l’aide In et Out aux modificateurs génériques. Vous devez placer la liste de types entre parenthèses et l’introduire avec le Of mot clé. |
parameterlist |
Optionnel. Liste des paramètres passés à la procédure lorsqu’il est appelé. Vous devez placer la liste de paramètres entre parenthèses. |
type |
Obligatoire si vous spécifiez une Function procédure. Type de données de la valeur de retour. |
Remarques
L’instruction Delegate
définit le paramètre et les types de retour d’une classe déléguée. Toute procédure avec des paramètres correspondants et des types de retour peut être utilisée pour créer une instance de cette classe déléguée. La procédure peut ensuite être appelée par le biais de l’instance de délégué, en appelant la méthode du Invoke
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 de délégué définit un constructeur à qui est passée la spécification d'une méthode d'objet. Un argument d’un constructeur délégué doit être 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 au moment de la compilation du expression
doit être le nom d'une classe ou d'une interface qui contient une méthode du nom spécifié dont la signature correspond à la signature de la classe du délégué. Le methodname
peut être soit une méthode partagée, soit une méthode d’instance. Ce 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 , parm2
As type2
type
, ...])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.
Pour plus d’informations sur les délégués, consultez Délégués.
Exemple :
L’exemple suivant utilise l’instruction Delegate
pour déclarer un délégué pour fonctionner sur deux nombres et retourner un nombre. La DelegateTest
méthode prend une instance d’un délégué de ce type et l’utilise pour fonctionner sur des paires de 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