Compartir a través de


Cómo: Definir un operador (Visual Basic)

Si ha definido una clase o estructura, puede definir el comportamiento de un operador estándar (como *, <> o And) cuando uno o ambos operandos es del tipo de la clase o estructura.

Defina el operador estándar como un procedimiento de operador dentro de la clase o estructura. Todos los procedimientos de operador deben ser Public Shared.

La definición de un operador en una clase o estructura también se denomina sobrecarga del operador.

Ejemplo

En el ejemplo siguiente se define el operador + para una estructura denominada height. La estructura utiliza alturas medidas en pies y pulgadas. Una pulgada son 2,54 centímetros, y un pie son 12 pulgadas. Para garantizar valores normalizados (pulgadas < 12,0), el constructor realiza un módulo 12 aritmético. El operador + usa el constructor para generar valores normalizados.

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

Puede probar la estructura height con el siguiente código.

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

Consulte también