Procedimientos de operador

Actualización: noviembre 2007

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

Cuándo definir procedimientos de operador

Tras definir una clase o estructura, puede declarar las variables para que pertenezcan al tipo de dicha clase o estructura. A veces estas variables deben participar en una operación como parte de una expresión. Para ello, estas variables deben ser un operando de un operador.

Visual Basic sólo define operadores en sus tipos de datos fundamentales. Puede definir el comportamiento de un operador cuando uno o los dos operandos pertenecen al tipo de la clase o de la estructura.

Para obtener más información, vea Operator (Instrucción).

Tipos de procedimientos de operador

Los procedimientos de operador pueden ser de uno de los siguientes tipos:

  • Una definición de un operador unario donde el argumento pertenece al tipo de la clase o estructura.

  • Una definición de un operador binario donde al menos uno de los argumentos pertenece al tipo de la clase o estructura.

  • Una definición de un operador de conversión donde el argumento pertenece al tipo de la clase o estructura.

  • Una 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 utilizan CType como el operador que se está definiendo.

Sintaxis de la declaración

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

Public Shared [Widening | Narrowing] OperatorsímboloDeOperador (operando1 [, operando2]) As datatype

' Statements of the operator procedure.

End Operator

Utilice únicamente la palabra clave Widening o Narrowing en un operador de conversión de tipos. El símbolo del operador siempre es CType (Función) en un operador de conversión de tipos.

Declare dos operandos para definir un operador binario y declare un operando para definir un operador unario, incluidos los operadores de conversión de tipos. Todos los operandos deben declararse ByVal.

Declare cada operando del mismo modo que declara los parámetros de Procedimientos Sub.

Tipo de datos

Como está definiendo un operador de una clase o estructura que ha definido, al menos uno de los operandos debe tener el mismo tipo de datos que la clase o la estructura. En un operador de conversión de tipos, el operando o el tipo de valor devuelto debe pertenecer al tipo de datos de la clase o estructura.

Para obtener más detalles, consulte Operator (Instrucción).

Sintaxis de llamada

Para invocar un procedimiento de operador de forma implícita, utilice el símbolo del operador en una expresión. Proporcione los operandos de la misma manera que proporciona los operadores predefinidos.

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

Dim testStruct As nombreDeEstructura

Dim testNewStruct As nombreDeEstructura = testStruct símboloDeOperador 10

Ejemplo de declaración y llamada

La estructura siguiente almacena un valor entero con signo de 128 bits como las partes constitutivas de orden superior y de orden inferior. Esta estructura 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 + establecido en veryLong.

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

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

Vea también

Tareas

Cómo: Definir un operador

Cómo: Definir un operador de conversión

Cómo: Llamar a un procedimiento de operador

Cómo: Utilizar una clase que define operadores

Conceptos

Procedimientos en Visual Basic

Procedimientos Sub

Procedimientos Function

Procedimientos de propiedad

Argumentos y parámetros de procedimiento

Referencia

Operator (Instrucción)