Partager via


Comment : définir un opérateur (Visual Basic)

Si vous avez défini une classe ou une structure, vous pouvez définir le comportement d'un opérateur standard (tel que *, <> ou And) lorsqu'au moins une des opérandes est du même type que votre classe ou structure.

Définissez l'opérateur standard comme une procédure d'opérateur dans la classe ou structure. Toutes les procédures d'opérateur doivent être Public Shared.

La définition d'un opérateur sur une classe ou une structure est également appelée surcharge de l'opérateur.

Exemple

L'exemple suivant définit l'opérateur + pour une structure appelée height. La structure utilise des hauteurs exprimées en pieds et pouces. Un pouce équivaut à 2,54 centimètres et un pied équivaut à 12 pouces. Pour garantir des valeurs normalisées (pouces < 12,0), le constructeur exécute une arithmétique modulo 12. L'opérateur + utilise le constructeur pour générer des valeurs normalisées.

Public Shadows Structure height
    ' Need Shadows because System.Windows.Forms.Form also defines property Height. 
    Private feet As Integer 
    Private inches As Double 
    Public Sub New(ByVal f As Integer, ByVal i As Double)
        Me.feet = f + (CInt(i) \ 12)
        Me.inches = i Mod 12.0
    End Sub 
    Public Overloads Function ToString() As String 
        Return Me.feet & "' " & Me.inches & """" 
    End Function 
    Public Shared Operator +(ByVal h1 As height, 
                             ByVal h2 As height) As height
        Return New height(h1.feet + h2.feet, h1.inches + h2.inches)
    End Operator 
End Structure

Vous pouvez tester la structure height à l'aide du code suivant.

Public Sub consumeHeight()
    Dim p1 As New height(3, 10)
    Dim p2 As New height(4, 8)
    Dim p3 As height = p1 + p2
    Dim s As String = p1.ToString() & " + " & p2.ToString() &
          " = " & p3.ToString() & " (= 8' 6"" ?)" 
    Dim p4 As New height(2, 14)
    s &= vbCrLf & "2' 14"" = " & p4.ToString() & " (= 3' 2"" ?)" 
    Dim p5 As New height(4, 24)
    s &= vbCrLf & "4' 24"" = " & p5.ToString() & " (= 6' 0"" ?)"
    MsgBox(s)
End Sub

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 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)

Comment : déclarer une structure (Visual Basic)

Référence

Operator, instruction

Structure, instruction

Mod, opérateur (Visual Basic)

Concepts

Procédures d'opérateur (Visual Basic)