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