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
- Procedimientos
- Procedimientos Sub
- Procedimientos de función
- Procedimientos de propiedad
- Argumentos y parámetros de procedimiento
- Operator Statement
- Procedimiento para definir un operador
- Procedimiento para definir un operador de conversión
- Procedimiento para llamar a un procedimiento de operador
- Procedimiento para usar una clase que define operadores