Comment : définir un opérateur

Mise à jour : novembre 2007

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 PublicShared.

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

Comment : appeler une procédure d'opérateur

Comment : utiliser une classe qui définit des opérateurs

Comment : déclarer une structure

Concepts

Procédures d'opérateur

Référence

Operator, instruction

Structure, instruction