Procedimentos do operador (Visual Basic)
Um procedimento de operador é uma série de declarações Visual Basic que definem o comportamento de um operador padrão (tais como *, <>, ou And) em uma classe ou estrutura que você definiu. Isto também é chamado de sobrecarga de operador .
Quando Definir Procedimentos de Operador
Quando definir uma classe ou estrutura, você pode declarar variaveis para que sejam do tipo da classe ou da estrutura. Às vezes, tal variável precisa participar em uma operação como parte de uma expressão. Para fazer isto, é necessário que seja um operando de um operador.
Visual Basicdefine operadores somente em seu tipo de dados fundamental. Você pode definir o comportamento de um operador quando um ou ambos os operandos são do tipo da sua classe ou estrutura.
Para obter mais informações, consulte Instrução Operator.
Tipos de Procedimento de Operador
Um operador de procedimento pode ser de um dos tipos seguintes:
Uma definição de um operador unário onde o argumento é do tipo da sua classe ou estrutura.
Uma definição de um operador binário onde pelo menos um dos argumentos é do tipo da sua classe ou estrutura.
Uma definição de um operador de conversão onde o argumento é do tipo da sua classe ou estrutura.
Uma definição de um operador de conversão que retorna o tipo da sua classe ou estrutura.
Operadores de conversão são sempre unários, e você sempre usa CType como o operador que você está definindo.
Sintaxe da Declaração
A sintaxe para declarar um operador de procedimento é a seguinte:
Public Shared [Widening | Narrowing] Operatoroperatorsymbol (operand1 [, operand2]) As datatype
' Statements of the operator procedure.
End Operator
Você usa a palavra chave Widening ou Narrowing somente para um operador de conversão de tipo. O símbolo do operador é sempre Função CType (Visual Basic) para operador de conversão de tipo.
Você declara dois operandos para definir um operador binário, e declara um operando para definir um operador unário, incluindo um operador de conversão de tipo. Todos operandos devem ser declarados ByVal.
Você declara cada operando da mesma forma que declara parâmetros para Subprocedimentos (Visual Basic).
Tipo de dados
Como você está definindo um operador em uma classe ou estrutura que você definiu, pelo menos um dos operandos deve ser do tipo de dado da classe ou estrutura. Para o operador de conversão de tipo, tanto o operando quanto o tipo de retorno devem ser do tipo de dado da classe ou estrutura.
Para mais detalhes, consulte Instrução Operator.
Sintaxe de Chamada
Você invoca um procedimento de operador de maneira implícita, ao utilizar o simbolo do operador em uma expressão. Você fornece os operandos da mesma forma que você faz para operadores pré-definidos.
A sintaxe para uma chamada implícita para um procedimento de operador é a seguinte:
Dim testStruct As nomedaestrutura
Dim testNewStruct As structurename = testStruct operatorsymbol 10
Ilustração de Declaração e Chamada
A seguinte estrutura armazena uma valor inteiro sinalizado de 128 bits constituinte de partes de alta-ordem e baixa-ordem. Define o operador + para somar dois valores veryLong e gerar como resultado um valor veryLong .
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
O exemplo a seguir mostra uma chamada típica para o operador + definido em veryLong.
Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2
Para maiores informações e exemplos, acesseSobrecarga de Operador no Visual Basic 2005.
Consulte também
Tarefas
Como definir um operador (Visual Basic)
Como definir um operador de conversão (Visual Basic)
Como chamar um procedimento de operador (Visual Basic)
Como usar uma classe que define operadores (Visual Basic)
Referência
Conceitos
Subprocedimentos (Visual Basic)
Procedimentos de função (Visual Basic)