Operador AndAlso
Executa short-circuiting conjunção lógica em duas expressões.
result = expression1 AndAlso expression2
Partes
result
Obrigatório.Qualquer expressão Boolean.O resultado é o Boolean resultado da comparação entre as duas expressões.expression1
Obrigatório.Qualquer expressão Boolean.expression2
Obrigatório.Qualquer expressão Boolean.
Comentários
Uma operação lógica é chamada de short-circuiting se o código compilado pode ignorar a avaliação de uma expressão de acordo com o resultado da outra expressão.Se o resultado da primeira expressão avaliada determina o resultado final da operação, não será necessário para avaliar a segunda expressão, porque ela não pode alterar o resultado final.Usa short-circuiting pode melhorar o desempenho se a expressão ignorada é complexa, ou se ela envolve chamadas de procedimento.
Se as duas expressões são avaliados como True, result é True. A tabela a seguir ilustra como result é determinado.
Se expression1 está |
E expression2 é |
O valor do result é |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(não avaliado) |
False |
Um uso do AndAlso operador é teste a existência de uma instância de objeto antes de tentar acesso um de seus membros. A linha de código a seguir ilustra isso.
If newObject AndAlso newObject.initFinished Then
O acesso ao initFinished propriedade na linha de código anterior poderia lançar uma NullReferenceException exceção se a newObject variável não tinha uma instância do objeto atribuída a ele. No entanto, a AndAlso operador faz com que o compilador ignorar o acesso a initFinished Se newObject é Nothing, pois Nothing é avaliada como False.
Tipos de dados
O operador AndAlso é definido apenas para o Tipo de dados booleanos (Visual Basic).Visual Basic converte cada operando conforme necessário para Boolean e executa a operação completamente em Boolean.Se você atribuir o resultado a um tipo numérico, Visual Basic converte do Boolean a esse tipo.Isso pode produzir um comportamento inesperado.For example, 5 AndAlso 12 results in –1 when converted to Integer.
Sobrecarga
O Operador And (Visual Basic) e o Operador IsFalse podem ser sobrecarregados, o que significa que uma classe ou estrutura pode redefinir seus comportamentos quando um operando tem o tipo da sua classe ou estrutura.Sobrecarregar o operadores And e IsFalse afeta o comportamento do operador AndAlso .Se seu código usa AndAlso em uma classe ou estrutura que sobrecarrega And e IsFalse, certifique-se de que você entende seu comportamento redefinido.Para obter mais informações, consulte Procedimentos de Operador.
Exemplo
O exemplo seguinte usa o operador AndAlso para executar uma conjunção lógica em duas expressões.O resultado é um Boolean valor que representa se conjoined de toda a expressão é true. Se a primeira expressão é 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 True, False e False respectivamente.No cálculo de secondCheck,a segunda expressão é avaliada não é avalidada porque a primeira já é False.No entanto, a segunda expressão é avaliada no cálculo de thirdCheck.
O exemplo a seguir mostra um Function procedimento que procura por um determinado valor entre os elementos de uma matriz. Se matriz estiver vazia ou se o comprimento da matriz foi excedido, a While demonstrativo não testa o elemento de matriz com o valor de Pesquisar.
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
Conceitos
Operadores lógicas e bit a bit no Visual Basic
Referência
Precedência de operadores no Visual Basic