Instrução Operator
Declara osímbolodo operador, operandos e código que definem umprocedimento de operadorem 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
Parts
attrlist
Optional. See Attribute List.Public
Required. Indica que esteprocedimento de operadortem Público (Visual Basic) de acesso.Overloads
Optional. See Sobrecargas (Visual Basic).Shared
Required. Indica que esteprocedimento de operadoré um Compartilhamento (Visual Basic)procedimento.Shadows
Optional. See Shadows (Visual Basic).Widening
Necessário para um operador de conversão, a menos que você especificar Narrowing. Indica que esteprocedimento de operadordefine uma Expansão (Visual Basic) conversão. Consulte "Widening e estreitando conversões" nesta página de Ajuda .Narrowing
Necessário para um operador de conversão, a menos que você especificar Widening. Indica que esteprocedimento de operadordefine uma Restrição (Visual Basic) conversão. Consulte "Widening e estreitando conversões" nesta página de Ajuda .operatorsymbol
Required. O símbolo ou o identificador do operador que esteprocedimento de operadordefine.operand1
Required. O nome e o tipo de operando esquerdo dooperador binárioou de único operando de um operador de unário (incluindo um operadorde conversão).operand2
Necessário para operadores binário . O nome e o tipo do operando à direita dooperador binário.operand1e operand2 que a sintaxe e partes a seguir:
[ ByVal ] operandname [ As operandtype ]
Part
Description
ByVal
Opcional, mas o mecanismo para passar argumentos devem ser ByVal (Visual Basic).
operandname
Required. ONome da variável que representa esse operando. See 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 oprocedimento de operadorretorna.statements
Optional. Bloco de instruções que oprocedimento de operadoré executado.returnvalue
Required. O valor que oprocedimento de operadorretorna para o código de chamada.EndOperator
Required. Finaliza a definição desteprocedimentode operador.
Comentários
Você pode usar Operator somente em uma classe ou estrutura. Isso significa que o dedeclaraçãocontexto para um operador não pode ser um arquivo de fonte , namespace, módulo, interface, procedimentoou bloco. For more information, see Contextos de declaração e níveis de acesso padrão (Visual Basic).
Tudo operadores devem ser Public Shared. Não é possível especificar ByRef, Optional, ou ParamArray para qualquer operando.
É possível usar osímbolo do operadorou o identificador para armazenar um valor retornado. Você deve usar o Returndedemonstrativoe 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 deoperador, quer você use ou não o Overloadspalavra-chave. The following table lists the operators you can define.
Type |
Operators |
---|---|
Unary |
+, -, IsFalse, IsTrue, Not |
Binary |
+, -, *, /, \, &, ^, >>, <<, =, <>, >, >=, <, <=, And, Like, Mod, Or, Xor |
Conversion (unary) |
CType |
Note that the = operator in the binary list is the comparison operator, not the assignment operator.
Quando você define CType, você deve especificar 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:
= and <>
> and <
>= and <=
IsTrue and 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 como o tipo de dados o seguinte:
O operando do operadorunário.
Pelo menos um dos operandos dooperador binário.
O operando ou o tipo de retorno de um operadorde conversão.
Determinados operadores têm restrições adicionais de tipo de dados , da seguinte maneira:
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 precisa corresponder ao tipo de qualquer operador. Por exemplo, uma comparação operador 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 AndAlsoooperador diretamente com um Operatordemonstrativo. No entanto, 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ê definiu o proprietário.
Você definiu o IsFalseooperador na classe ou estrutura na qual você definiu And.
Da mesma forma, você pode usar OrElse se você tiver definido Or em operandos mesmos, com o tipo de retorno da classe ou estruturae você tiver definido IsTrue na classe ou estrutura.
Widening and Narrowing Conversions
A widening conversão sempre é bem-sucedida em tempo de execução, enquanto um Estreitando conversão pode falhar em tempo de execução. For more information, see Conversões de expansão e restrição (Visual Basic).
Se você declarar um procedimento de de conversão para ser Widening, seu código de procedimento não deve gerar 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 um procedimento de conversão talvez não seja bem-sucedida, ou que ele pode causar uma exceçãode não tratada, você deve declarar que ele seja Narrowing.
Exemplo
O seguinte exemplo de código usa a Operatordedemonstrativo para definir o estrutura de tópicos 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 operadores (Visual Basic)
Referência
Operador IsFalse (Visual Basic)
Operador IsTrue (Visual Basic)