Share via


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 los dos operandos pertenecen al tipo de datos de la clase o estructura.

Defina al 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 de una clase o estructura también se denomina sobrecarga del operador.

Ejemplo

En el ejemplo siguiente se define el operador + en una estructura denominada height. La estructura utiliza altos que se miden en pies y pulgadas. Una pulgada equivale a 2,54 centímetros y un pie a 12 pulgadas. Para garantizar que los valores están normalizados (pulgadas < 12,0), el constructor lleva a cabo una aritmética módulo 12. El operador + utiliza 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 código siguiente.

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

Para obtener más información y ejemplos, vea Sobrecarga en Visual Basic 2005

Vea también

Tareas

Cómo: Definir un operador de conversión (Visual Basic)

Cómo: Llamar a un procedimiento de operador (Visual Basic)

Cómo: Utilizar una clase que define operadores (Visual Basic)

Cómo: Declarar una estructura (Visual Basic)

Referencia

Operator (Instrucción)

Structure (Instrucción)

Mod (Operador, Visual Basic)

Conceptos

Procedimientos de operador (Visual Basic)