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 (tel que *, <> ou And) sur une classe ou structure définie. Elle est également appelée surcharge d'opérateur.
Quand définir des procédures d'opérateur
Lorsque vous avez défini une classe ou structure, vous pouvez déclarer des variables comme étant du type de cette classe ou structure. Une telle variable doit parfois participer à une opération intégrée à une expression. Pour ce faire, elle doit être un opérande d'un opérateur.
Visual Basic définit uniquement des opérateurs sur ses types de données fondamentaux. Vous pouvez définir le comportement d'un opérateur lorsqu'au moins un des opérandes est du type de votre classe ou structure.
Pour plus d'informations, consultez Operator, instruction.
Types de procédure d'opérateur
Une procédure d'opérateur peut être de l'un des types suivants :
Une définition d'un opérateur unaire dans laquelle l'argument est du type de votre classe ou structure.
Une définition d'un opérateur binaire dans lequel au moins un des arguments est du type de votre classe ou structure.
Une définition d'un opérateur de conversion dans lequel l'argument est du type de votre classe ou structure.
Une 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 en cours de définition.
Syntaxe de déclaration
La syntaxe de déclaration d'une procédure d'opérateur est la suivante :
Public Shared [Widening | Narrowing] Operatorsymboleopérateur (operand1 [, operand2]) As typedonnées
' Statements of the operator procedure.
End Operator
Utilisez uniquement le mot clé Widening ou Narrowing sur un opérateur de conversion de type. Le symbole de l'opérateur est toujours Fonction CType (Visual Basic) pour un opérateur de conversion de type.
Vous déclarez deux opérandes pour définir un opérateur binaire, et un seul 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 comme étant ByVal.
Vous déclarez chaque opérande de la même manière que vous déclarez des paramètres pour Procédures Sub (Visual Basic).
Type de données
Comme vous définissez un opérateur sur une classe ou structure que vous avez définie, au moins un des opérandes doit être du même type de données que cette classe ou structure. Pour un opérateur de conversion de type, l'opérande ou le type de retour doit être du même type de données que la classe ou structure.
Pour plus d'informations, consultez Operator, instruction.
Syntaxe d'appel
Vous devez appeler de manière implicite une procédure d'opérateur en utilisant le symbole d'opérateur dans une expression. Vous fournissez les opérandes de la même manière 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 NomStructure
Dim testNewStruct As nomstructure = testStruct symboleopérateur 10
Illustration de déclaration et d'appel
La structure suivante stocke une valeur entière 128 bits signée comme parties constitutives de poids fort et de poids faible. Elle 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 + dont la valeur est veryLong.
Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2
Pour plus d'informations et d'exemples, consultez la page Surcharge d'opérateur dans Visual Basic 2005 (en anglais).
Voir aussi
Tâches
Comment : définir un opérateur (Visual Basic)
Comment : définir un opérateur de conversion (Visual Basic)
Comment : appeler une procédure d'opérateur (Visual Basic)
Comment : utiliser une classe qui définit des opérateurs (Visual Basic)
Référence
Concepts
Procédures Function (Visual Basic)