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.
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 :
VB
PublicShared [Widening | Narrowing] Operator operatorsymbol ( operand1 [, operand2 ]) As datatype
' Statements of the operator procedure.EndOperator
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.
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 AsStructureName
Dim testNewStruct Asnom de structure= testStructsymbole d’opérateurs10
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.
VB
PublicStructure veryLong
Dim highOrder AsLongDim lowOrder AsLongPublicSharedOperator +(ByVal v As veryLong,
ByVal w As veryLong) As veryLong
Dim sum AsNew veryLong
sum = v
Try
sum.lowOrder += w.lowOrder
Catch ex As System.OverflowException
sum.lowOrder -= (Long.MaxValue - w.lowOrder + 1)
sum.highOrder += 1EndTry
sum.highOrder += w.highOrder
Return sum
EndOperatorEndStructure
L’exemple suivant montre un appel classique à l’opérateur + défini sur veryLong.
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage. Pour plus d’informations, consultez notre guide du contributeur.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Souhaitez-vous créer des procédures personnalisées dans AL ? Ce module porte sur l’explication de la façon dont vous pouvez créer des procédures. De plus, il décrit la différence entre les procédures locales et globales, la différence entre les variables locales et globales, et comment vous pouvez transmettre des variables à une procédure.