Compartilhar via


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

Confira também