Operador AndAlso (Visual Basic)

Executa conjunção lógica de curto-circuito em duas expressões.

Sintaxe

result = expression1 AndAlso expression2  

Partes

Termo Definição
result Obrigatório. Qualquer Boolean expressão. O resultado é o Boolean resultado da comparação das duas expressões.
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 ambas as expressões avaliarem para True, result é True. A tabela a seguir ilustra como result é determinado.

Se expression1 for E expression2 é O valor de result é
True True True
True False False
False (não avaliado) False

Nota

Em uma comparação booleana, o operador sempre avalia ambas as expressões, o And que pode incluir fazer chamadas de procedimento. O operador AndAlso realiza curto-circuito, o que significa que se expression1 é False, então expression2 não é avaliado.

Tipos de Dados

O AndAlso 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 And e o operador IsFalse 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 And operadores afeta IsFalse o comportamento do AndAlso operador. Se o seu código usa AndAlso em uma classe ou estrutura que sobrecarrega And e IsFalse, certifique-se de entender seu comportamento redefinido. Para obter mais informações, consulte Procedimentos do operador.

Exemplo 1

O exemplo a seguir usa o AndAlso operador para executar uma conjunção lógica em duas expressões. O resultado é um Boolean valor que representa se toda a expressão unida é verdadeira. Se a primeira expressão for False, 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 AndAlso b > c
secondCheck = b > a AndAlso b > c
thirdCheck = a > b AndAlso c > b

O exemplo anterior produz resultados de True, False, e False, respectivamente. No cálculo de secondCheck, a segunda expressão não é avaliada porque a primeira já Falseé . No entanto, a segunda expressão é avaliada no cálculo de thirdCheck.

Exemplo 2

O exemplo a seguir mostra um Function procedimento que procura um determinado valor entre os elementos de uma matriz. Se a matriz estiver vazia ou se o comprimento da matriz tiver sido excedido, a While instrução não testará o elemento da matriz em relação ao valor de pesquisa.

Public Function findValue(ByVal arr() As Double, 
    ByVal searchValue As Double) As Double
    Dim i As Integer = 0
    While i <= UBound(arr) AndAlso arr(i) <> searchValue
        ' If i is greater than UBound(arr), searchValue is not checked.
        i += 1
    End While
    If i > UBound(arr) Then i = -1
    Return i
End Function

Consulte também