Operador OrElse (Visual Basic)
Executa curto-circuito, incluindo disjunção lógica em duas expressões.
Sintaxe
result = expression1 OrElse expression2
Partes
result
Obrigatório. Qualquer Boolean
expressão.
expression1
Obrigatório. Qualquer Boolean
expressão.
expression2
Obrigatório. Qualquer Boolean
expressão.
Observações
Diz-se que uma operação lógica é um curto-circuito se o código compilado pode ignorar a avaliação de uma expressão dependendo do resultado de outra expressão. Se o resultado da primeira expressão avaliada determina o resultado final da operação, não há necessidade de avaliar a segunda expressão, porque não pode alterar o resultado final. O curto-circuito pode melhorar o desempenho se a expressão ignorada for complexa ou se envolver chamadas de procedimento.
Se uma ou ambas as expressões avaliarem a True
, result
é True
. A tabela a seguir ilustra como result
é determinado.
Se expression1 for |
E expression2 é |
O valor de result é |
---|---|---|
True |
(não avaliado) | True |
False |
True |
True |
False |
False |
False |
Tipos de Dados
O OrElse
operador é definido apenas para o tipo de dados booleano. Visual Basic converte cada operando conforme necessário para Boolean
antes de avaliar a expressão. Se você atribuir o resultado a um tipo numérico, o Visual Basic o converte de Boolean
para esse tipo de tal forma que False
se torna 0
e True
se torna -1
.
Para obter mais informações, consulte Conversões de tipo booleano.
Sobrecarga
O operador Or e o operador IsTrue podem estar sobrecarregados, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo dessa classe ou estrutura. A sobrecarga dos Or
operadores afeta IsTrue
o comportamento do OrElse
operador. Se o seu código usa OrElse
em uma classe ou estrutura que sobrecarrega Or
e IsTrue
, certifique-se de entender seu comportamento redefinido. Para obter mais informações, consulte Procedimentos do operador.
Exemplo 1
O exemplo a seguir usa o operador para executar a OrElse
disjunção lógica em duas expressões. O resultado é um Boolean
valor que representa se uma das duas expressões é verdadeira. Se a primeira expressão for True
, a segunda não será avaliada.
Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b OrElse b > c
secondCheck = b > a OrElse b > c
thirdCheck = b > a OrElse c > b
O exemplo anterior produz resultados de True
, True
e False
respectivamente. No cálculo de firstCheck
, a segunda expressão não é avaliada porque a primeira já True
é . No entanto, a segunda expressão é avaliada no cálculo de secondCheck
.
Exemplo 2
O exemplo a seguir mostra uma If
instrução ...Then
contendo duas chamadas de procedimento. Se a primeira chamada retornar True
, o segundo procedimento não será chamado. Isso pode produzir resultados inesperados se o segundo procedimento executar tarefas importantes que sempre devem ser executadas quando esta seção do código é executada.
If testFunction(5) = True OrElse otherFunction(4) = True Then
' If testFunction(5) is True, otherFunction(4) is not called.
' Insert code to be executed.
End If