Instruçã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.Consulte Sobrecargas (Visual Basic).Shared
Obrigatório.Indica que este procedimento de operador é um Compartilhado (Visual Basic) procedimento.Shadows
Opcional.Consulte Sombras (Visual Basic).Widening
Necessário para um operador de conversão, a menos que você especifique Narrowing.Indica que este procedimento de operador define uma Alargamento (Visual Basic) conversão.Consulte "Widening e restringir conversões" 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 uma Restrição (Visual Basic) conversão.Consulte "Widening e restringir conversões" nesta página Ajuda.operatorsymbol
Obrigatório.O símbolo ou o identificador do operador que este procedimento de operador define.operand1
Obrigatório.O nome e o tipo de operando esquerdo de um operador binário ou de único operando de um operador unário (incluindo um operador de conversão).operand2
Obrigatório para operadores binários.O nome e o tipo do operando à direita de um operador binário.operand1e operand2 que a sintaxe e partes a seguir:
[ ByVal ] operandname [ As operandtype ]
Parte
Descrição
ByVal
É opcional, mas o mecanismo de passagem deve ser ByVal (Visual Basic).
operandname
Obrigatório.Nome da variável que representa esse operando.Consulte Nomes de elementos declarados (Visual Basic).
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 deste procedimento de operador.
Comentários
Você pode usar Operator somente em uma classe ou estrutura.Isso significa que o o contexto de declaração para um operador não pode ser um arquivo de origem, espaço para nome, módulo, interface, procedimento ou bloco.Para obter mais informações, consulte Níveis de acesso padrão (Visual Basic) e os contextos de declaração.
Todos os operadores devem ser Public Shared.Não é possível especificar ByRef, Optional, ou ParamArray para qualquer operador.
Você não pode usar o símbolo do operador ou o identificador para armazenar um valor de retorno.Você deve usar o Return instrução e ele devem especificar um valor.Qualquer número de Return declarações podem aparecer em qualquer lugar no procedimento.
A definição de um operador dessa maneira é chamado de a sobrecarga de operador, quer você use ou não o Overloads palavra-chave.A tabela a seguir lista os operadores que você pode definir.
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 um Widening ou Narrowing.
Pares correspondentes
Você deve definir determinados operadores como pares correspondentes.Se você definir um operador de tal um par, você deve definir o outro também.Os pares correspondentes são os seguintes:
= e <>
> e <
>= e <=
IsTrue e IsFalse
Restrições de tipo de dados
Cada operador que você define deve envolver a classe ou estrutura na qual você defini-la.Isso significa que a classe ou estrutura deve aparecer como 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, como segue:
Se você definir a IsTrue e IsFalse operadores, eles devem ambos retornar o Boolean tipo.
Se você definir a << e >> operadores, eles devem especificar o Integer tipo para o operandtype de operand2.
O tipo de retorno não precisam corresponder ao tipo de qualquer operador.Por exemplo, um operador de comparação, como = ou <> pode retornar Boolean , mesmo se nenhum operando for Boolean.
Operadores bit a bit e lógicas
O And, Or, Not, e Xor operadores podem executar operações de lógicas ou bit a bit em 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 instrução.Entretanto, você pode usar AndAlso se você tiver cumprido as seguintes condições:
Você definiu And nos mesmos tipos de operando que você deseja usar para AndAlso.
Sua definição de And retorna o mesmo tipo que a classe ou estrutura na qual você o define.
Você definiu a IsFalse o operador na classe ou estrutura na qual você definiu And.
Da mesma forma, você pode usar OrElse se você tiver definido Or na mesmos operandos, com o tipo de retorno da classe ou estrutura e você tiver definido IsTrue na classe ou estrutura.
Conversões Ampliadoras e Redutoras
A widening conversão sempre é bem-sucedida em tempo de execução, enquanto um Estreitando conversão pode falhar em tempo de execução.Para obter mais informações, consulte Ampliação e restrição de conversões (Visual Basic).
Se você declarar um procedimento de conversão para ser Widening, seu código de procedimento não deve gerar quaisquer falhas.Isso significa 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 que um procedimento de conversão talvez não seja bem-sucedida, ou que ele pode causar uma exceção não tratada, você deve declarar que ele seja Narrowing.
Exemplo
O seguinte exemplo de código usa a Operator a instrução para definir o contorno de uma estrutura que inclui procedimentos de operador para o And, Or, IsFalse, e IsTrue operadores.Ande Or cada levar dois operandos do tipo abc e tipo de retorno abc.IsFalsee IsTrue cada ter um único operando do tipo abc e retornar Boolean.Essas definições permitem que o código de chamada 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 (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 os operadores (Visual Basic)
Referência
Operador IsFalse (Visual Basic)
Operador IsTrue (Visual Basic)