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 de conversión
Cómo: Llamar a un procedimiento de operador
Cómo: Utilizar una clase que define operadores
Conceptos
Procedimientos en Visual Basic
Argumentos y parámetros de procedimiento