Declaração Operator

Declara o símbolo do operador, operandos e código que definem um procedimento de operador em uma classe ou estrutura.

[ <attrlist> ] Public [ Overloads ] Shared [ Shadows ] [ Widening | Narrowing ] 
Operator operatorsymbol ( operand1 [, operand2 ]) [ As [ <attrlist> ] type ]
    [ statements ]
    [ statements ]
    Return returnvalue
    [ statements ]
End Operator

Partes

  • attrlist
    Opcional.Veja Lista de Atributos.

  • Public
    Obrigatório.Indica que este procedimento de operador tem Público (Visual Basic) acesso.

  • Overloads
    Opcional.SeeSobrecargas.

  • Shared
    Obrigatório.Indica que este procedimento de operador é um Compartilhamento (Visual Basic) procedimento.

  • Shadows
    Opcional.SeeSombras.

  • Widening
    Necessário para um operador de conversão, a menos que você especifique Narrowing. Indica que este procedimento de operador define um Widening conversão. Consulte "Alargamento e definindo Conversions" nesta página Ajuda.

  • Narrowing
    Necessário para um operador de conversão, a menos que você especifique Widening. Indica que este procedimento de operador define um Narrowing conversão. Consulte "Alargamento e definindo Conversions" nesta página Ajuda.

  • operatorsymbol
    Obrigatório.O símbolo ou o identificador do operador que define este procedimento de operador.

  • operand1
    Obrigatório.O nome e tipo de único operando de um operador unário (incluindo um operador de conversão) ou o operando esquerdo de um operador binário.

  • operand2
    Obrigatório para operadores binário.O nome e tipo do operando à direita de um operador binário.

    operand1 e operand2 ter a seguinte sintaxe e partes:

    [ ByVal ] operandname [ As operandtype ]

    Parte

    Descrição

    ByVal

    Opcional, mas o mecanismo para passar argumentos deve ser ByVal.

    operandname

    Obrigatório.Nome da variável que representa este operando.SeeNomes de Elementos Declarados.

    operandtype

    Opcional, a menos que Option Strict é On. Tipo de dados deste operando.

  • type
    Opcional, a menos que Option Strict é On. Tipo de dados do valor o procedimento de operador retorna.

  • statements
    Opcional.Bloco de instruções que o procedimento de operador é executado.

  • returnvalue
    Obrigatório.O valor que o procedimento de operador retorna para o código de chamada.

  • EndOperator
    Obrigatório.Finaliza a definição desse procedimento de operador.

Comentários

Você pode usar Operator somente em uma classe ou estrutura. Isso significa que o declaração de contexto para um operador não pode ser um arquivo de fonte, espaço para nome, módulo, interface, procedimento ou bloco.Para obter mais informações, consulte Declaração de contextos e níveis de acesso padrão.

Todos os operadores devem ser Public Shared. Não é possível especificar ByRef, Optional, ou ParamArray para qualquer operador.

Não é possível usar o símbolo do operador ou identificador para armazenar um valor retornado.Você deve usar o Return demonstrativo e ele devem especificar um valor. Qualquer número de Return instruções podem aparecer em qualquer lugar no procedimento.

Definir um operador dessa maneira é chamado sobrecarga de operador, ou não é usar o Overloads palavra-chave. A tabela a seguir lista os operadores que você pode definir.

Type (Tipo)

Operadores

Unário

+, -, IsFalse, IsTrue, Not

Binário

+, -, *, /, \, &, ^, >>, <<, =, <>, >, >=, <, <=, And, Like, Mod, Or, Xor

Conversão (Unário)

CType

Observe que o operador = na lista binária é o operador de comparação, não o operador de atribuição.

Quando você define CType, você deve especificar Widening ou Narrowing.

Pares correspondentes

Você deve definir determinados operadores sistema autônomo pares correspondentes.Se você definir o operador de um emparelhar de tal, você deve definir o Outros também.Os pares correspondentes são:

  • = e <>

  • > e <

  • >= e <=

  • IsTrue e IsFalse

Restrições de tipo de dados

Cada operador que você definir deve envolver a classe ou estrutura em que você define.Isso significa que a classe ou estrutura deve aparecer sistema autônomo o tipo de dados das seguintes opções:

  • O operando de um operador unário.

  • Pelo menos um dos operandos de um operador binário.

  • O operando ou o tipo de retorno de um operador de conversão.

Determinados operadores têm dados adicionais Digite restrições, sistema autônomo segue:

  • Se você definir o IsTrue e IsFalse operadores, elas devem ambos retornem o Boolean Digite.

  • Se você definir o << e >> operadores, eles devem especificar o Integer tipo para o operandtype de operand2.

Não tem o tipo de retorno corresponder ao tipo de qualquer operador.Por exemplo, um operador de comparação, sistema autônomo = ou <> pode retornar Boolean mesmo que haja nenhum operando Boolean.

Operadores lógicas e bit a bit

The And, Or, Not, e Xor operadores podem executar operações de lógicas ou bit a bit no Visual Basic. No entanto, se você definir um desses operadores em uma classe ou estrutura, você pode definir somente sua operação bit a bit.

Não é possível definir o AndAlso operador diretamente com um Operator demonstrativo. No entanto, você pode usar AndAlso Se tiver cumprido as seguintes condições:

  • Você definiu And nos mesmos tipos de operando que deseja usar para AndAlso.

  • Sua definição de And Retorna o mesmo tipo sistema autônomo a classe ou estrutura na qual você o define.

  • Você definiu o IsFalse operador de classe ou estrutura na qual você tenha definido And.

Da mesma forma, você pode usar OrElse Se você tiver definido Or em operandos mesmos, com o tipo de retorno da classe ou estrutura e você tiver definido IsTrue a classe ou estrutura.

Conversões Ampliadoras e Redutoras

A conversão de expansão sempre tem êxito no time de execução, enquanto um conversão de restrição pode falhar em time de execução.Para obter mais informações, consulte Conversões Ampliadoras e Redutoras.

Se você declarar um procedimento de conversão a ser Widening, o código do procedimento não deve gerar quaisquer falhas. Isso significa que o seguinte:

  • Ele sempre deve retornar um valor válido do tipo type.

  • Ele deve tratar todas as possíveis exceções e outras condições de erro.

  • Ele deve tratar qualquer retorna erro de qualquer procedimento chama.

Se houver qualquer possibilidade de um procedimento de conversão talvez não seja bem-sucedida, ou que ele pode causar uma exceção sem tratamento, você deve declarar que ele seja Narrowing.

Exemplo

O exemplo de código a seguir usa o Operator demonstrativo para definir o estrutura de tópicos de uma estrutura que inclui procedimentos de operador para o And, Or, IsFalse, e IsTrue operadores. And e Or cada têm dois operandos do tipo abc e tipo de retorno abc. IsFalse e IsTrue cada ter um único operando do tipo abc e retornar Boolean. Essas definições permitir códigos chamado usar And, AndAlso, Or, e OrElse com operandos do tipo abc.

Public Structure abc
    Dim d As Date
    Public Shared Operator And(ByVal x As abc, ByVal y As abc) As abc
        Dim r As New abc
        ' Insert code to calculate And of x and y.
        Return r
    End Operator
    Public Shared Operator Or(ByVal x As abc, ByVal y As abc) As abc
        Dim r As New abc
        ' Insert code to calculate Or of x and y.
        Return r
    End Operator
    Public Shared Operator IsFalse(ByVal z As abc) As Boolean
        Dim b As Boolean
        ' Insert code to calculate IsFalse of z.
        Return b
    End Operator
    Public Shared Operator IsTrue(ByVal z As abc) As Boolean
        Dim b As Boolean
        ' Insert code to calculate IsTrue of z.
        Return b
    End Operator
End Structure

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

Conversões Ampliadoras e Redutoras

Procedimentos de Operador

Referência

Operador IsFalse

Operador IsTrue

Widening

Narrowing