Compartir vía


Procedimientos de operador (Visual Basic)

Un procedimiento de operador es una serie de instrucciones de Visual Basic que definen el comportamiento de un operador estándar (como *, <>o And) en una clase o estructura que haya definido. Esto también se denomina sobrecarga del operador.

Cuándo definir procedimientos de operador

Cuando haya definido una clase o estructura, puede declarar variables como del tipo de esa clase o estructura. A veces, esta variable debe participar en una operación como parte de una expresión. Para ello, debe ser un operando de un operador.

Visual Basic define operadores solo en sus tipos de datos fundamentales. Puede definir el comportamiento de un operador cuando uno o ambos operandos son del tipo de la clase o estructura.

Para más información, consulte instrucción de operador.

Tipos de procedimiento de operador

Un procedimiento de operador puede ser uno de los siguientes tipos:

  • Definición de un operador unario donde el argumento es del tipo de la clase o estructura.

  • Definición de un operador binario donde al menos uno de los argumentos es del tipo de la clase o estructura.

  • Definición de un operador de conversión donde el argumento es del tipo de la clase o estructura.

  • Definición de un operador de conversión que devuelve el tipo de la clase o estructura.

Los operadores de conversión siempre son unarios y siempre se usa CType como operador que se va a definir.

Sintaxis de la declaración

La sintaxis para declarar un procedimiento de operador es la siguiente:

Public Shared [Widening | Narrowing] Operator operatorsymbol ( operand1 [,  operand2 ]) As datatype

' Statements of the operator procedure.

End Operator

Use la palabra clave Widening o Narrowing solo en un operador de conversión de tipos. El símbolo del operador siempre es CType Function para un operador de conversión de tipos.

Se declaran dos operandos para definir un operador binario y se declara un operando para definir un operador unario, incluido un operador de conversión de tipos. Todos los operandos deben declararse ByVal.

Declara cada operando de la misma manera que declara parámetros para Sub Procedures.

Tipo de datos

Dado que está definiendo un operador en una clase o estructura que ha definido, al menos uno de los operandos debe ser del tipo de datos de esa clase o estructura. Para un operador de conversión de tipos, el operando o el tipo de valor devuelto deben ser del tipo de datos de la clase o estructura.

Para obtener más información, vea Instrucción de operador.

Sintaxis de llamada

Se invoca implícitamente un procedimiento de operador mediante el símbolo del operador en una expresión. Los operandos se proporcionan de la misma manera que para los operadores predefinidos.

La sintaxis de una llamada implícita a un procedimiento de operador es la siguiente:

Dim testStruct As structurename

Dim testNewStruct As structurename = testStruct operatorsymbol 10

Ilustración de declaración y llamada

La siguiente estructura almacena un valor entero de 128 bits con signo como partes constituyentes de orden alto y de orden bajo. Define el operador + para agregar dos valores veryLong y generar un valor veryLong resultante.

Public Structure veryLong
    Dim highOrder As Long
    Dim lowOrder As Long
    Public Shared Operator +(ByVal v As veryLong, 
                             ByVal w As veryLong) As veryLong
        Dim sum As New veryLong
        sum = v
        Try
            sum.lowOrder += w.lowOrder
        Catch ex As System.OverflowException
            sum.lowOrder -= (Long.MaxValue - w.lowOrder + 1)
            sum.highOrder += 1
        End Try
        sum.highOrder += w.highOrder
        Return sum
    End Operator
End Structure

En el ejemplo siguiente se muestra una llamada típica al operador + definido en veryLong.

Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2

Consulte también