Partager via


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

Operator, instruction

Concepts

Procédures dans Visual Basic

Procédures Sub (Visual Basic)

Procédures Function (Visual Basic)

Procédures Property (Visual Basic)

Paramètres et arguments d'une procédure (Visual Basic)