Compartilhar via


Procedimentos de Operador

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 Declaraçã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 (tipo de dados operando1 [, operando2]) As

' 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 CType Function 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.

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 Declaraçã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 obter mais informações e exemplos, consulte sobrecarga de operador no Visual Basic 2005.

Consulte também

Tarefas

Como: Definir um operador

Como: Define a Conversion operador

Como: telefonar um procedimento de operador

Como: Usar uma classe que define os operadores

Conceitos

Procedimentos no Visual Basic

Subprocedimentos

Procedimentos de função

Procedimentos de Propriedade

Parâmetros do procedimento e argumentos

Referência

Declaração Operator