Operador OrElse (Visual Basic)
Realiza uma disjunção lógica inclusiva de curto-circuito em duas expressões.
Sintaxe
result = expression1 OrElse expression2
Partes
result
Obrigatórios. Qualquer expressão de Boolean
.
expression1
Obrigatórios. Qualquer expressão de Boolean
.
expression2
Obrigatórios. Qualquer expressão de Boolean
.
Comentários
Uma operação lógica será considerada de curto-circuito se o código compilado puder ignorar a avaliação de uma expressão, a depender do resultado de outra expressão. Se o resultado da primeira expressão avaliada determinar o resultado final da operação, não será necessário avaliar a segunda expressão, pois ela não poderá 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 das expressões ou as duas forem avaliadas como True
, então result
retornará True
. A tabela a seguir ilustra como result
é determinado.
Se expression1 for |
E expression2 for |
O valor de result será |
---|---|---|
True |
(não avaliado) | True |
False |
True |
True |
False |
False |
False |
Tipos de dados
O operador OrElse
é definido apenas para o tipo de dados booliano. O 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 converterá de Boolean
para esse tipo, de modo que False
se torne 0
e True
se torne -1
.
Para obter mais informações, consulte Conversões de tipo booliano.
Sobrecarga
O operador Or e o operador IsTrue podem ser sobrecarregados, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tiver o tipo dessa classe ou estrutura. Sobrecarregar os operadores Or
e IsTrue
afeta o comportamento do operador OrElse
. Se o seu código usar OrElse
em uma classe ou estrutura que sobrecarrega Or
e IsTrue
, certifique-se de entender o comportamento redefinido. Para obter mais informações, confira Procedimentos de operador.
Exemplo 1
O exemplo a seguir usa o operador OrElse
para executar uma disjunção lógica em duas expressões. O resultado é um valor Boolean
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á está como True
. No entanto, a segunda expressão é avaliada no cálculo de secondCheck
.
Exemplo 2
O exemplo a seguir mostra uma instrução If
...Then
contendo duas chamadas de procedimento. Se a primeira chamada retornar True
, o segundo procedimento não será chamado. Isso poderá produzir resultados inesperados se o segundo procedimento executar tarefas importantes que sempre devem ser executadas quando esta seção do código for 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