Procédures d'opérateur (Visual Basic)
Une procédure d’opérateur est une série d’instructions Visual Basic qui définissent le comportement d’un opérateur standard (par exemple, *
, <>
ou And
) sur une classe ou une structure que vous avez définie. Ceci est également appelé surcharge d’opérateur.
Quand définir des procédures d’opérateur
Lorsque vous avez défini une classe ou une structure, vous pouvez déclarer des variables comme étant du type de cette classe ou structure. Parfois, une telle variable doit participer à une opération dans le cadre d’une expression. Pour ce faire, il doit s’agir d’un opérande d’un opérateur.
Visual Basic définit des opérateurs uniquement sur ses types de données fondamentaux. Vous pouvez définir le comportement d’un opérateur lorsqu’un ou les deux opérandes sont du type de votre classe ou structure.
Pour plus d’informations, consultez l’Instruction Operator.
Types de procédures d’opérateur
Une procédure d’opérateur peut être l’un des types suivants :
Définition d’un opérateur unaire où l’argument est du type de votre classe ou structure.
Définition d’un opérateur binaire où au moins un des arguments est du type de votre classe ou structure.
Définition d’un opérateur de conversion où l’argument est du type de votre classe ou structure.
Définition d’un opérateur de conversion qui retourne le type de votre classe ou structure.
Les opérateurs de conversion sont toujours unaires et vous utilisez toujours CType
comme opérateur que vous définissez.
Syntaxe de déclaration
La syntaxe de déclaration d’une procédure d’opérateur est la suivante :
Public Shared [Widening | Narrowing] Operator operatorsymbol ( operand1 [, operand2 ]) As datatype
' Statements of the operator procedure.
End Operator
Le mot clé Widening
ou Narrowing
ne peut être utilisé que pour un opérateur de conversion de type. Le symbole d’opérateur est toujours Fonction CType pour un opérateur de conversion de type.
Vous déclarez deux opérandes pour définir un opérateur binaire et vous déclarez un opérande pour définir un opérateur unaire, y compris un opérateur de conversion de type. Tous les opérandes doivent être déclarés ByVal
.
Vous déclarez chaque opérande de la même façon que vous déclarez des paramètres pour les procédures Sub.
Type de données
Étant donné que vous définissez un opérateur sur une classe ou une structure que vous avez définie, au moins l’un des opérandes doit être du type de données de cette classe ou structure. Pour un opérateur de conversion de type, l’opérande ou le type de retour doit être du type de données de la classe ou de la structure.
Pour plus d’informations, consultez l’instruction Operator.
Syntaxe appelante
Vous appelez implicitement une procédure d’opérateur à l’aide du symbole d’opérateur dans une expression. Vous fournissez les opérandes de la même façon que pour les opérateurs prédéfinis.
La syntaxe d’un appel implicite à une procédure d’opérateur est la suivante :
Dim testStruct As
StructureName
Dim testNewStruct As
nom de structure = testStruct
symbole d’opérateurs 10
Illustration de la déclaration et de l’appel
La structure suivante stocke une valeur entière 128 bits signée en tant que parties constituantes d’ordre haut et d’ordre bas. Il définit l’opérateur +
pour ajouter deux valeurs veryLong
et générer une valeur veryLong
résultante.
Public Structure veryLong
Dim highOrder As Long
Dim lowOrder As Long
Public Shared Operator +(ByVal v As veryLong,
ByVal w As veryLong) As veryLong
Dim sum As New veryLong
sum = v
Try
sum.lowOrder += w.lowOrder
Catch ex As System.OverflowException
sum.lowOrder -= (Long.MaxValue - w.lowOrder + 1)
sum.highOrder += 1
End Try
sum.highOrder += w.highOrder
Return sum
End Operator
End Structure
L’exemple suivant montre un appel classique à l’opérateur +
défini sur veryLong
.
Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2
Voir aussi
- Procédures
- Sub, procédures
- Function, procédures
- Procédures Property
- Paramètres et arguments d’une procédure
- Operator Statement
- Comment : définir un opérateur
- Guide pratique : définir un opérateur de conversion
- Comment : appeler une procédure d'opérateur
- Comment : utiliser une classe qui définit des opérateurs