AndAlso (Operador, Visual Basic)
Realiza una conjunción lógica de cortocircuito en dos expresiones.
Sintaxis
result = expression1 AndAlso expression2
Partes
Término | Definición |
---|---|
result |
Obligatorio. Cualquier expresión Boolean . El resultado es el resultado Boolean de la comparación de ambas expresiones. |
expression1 |
Obligatorio. Cualquier expresión Boolean . |
expression2 |
Obligatorio. Cualquier expresión Boolean . |
Comentarios
Se dice que una operación lógica es de cortocircuito si el código compilado puede omitir la evaluación de una expresión en función del resultado de otra expresión. Si el resultado de la primera expresión evaluada determina el resultado final de la operación, no es necesario evaluar la segunda expresión, ya que no puede cambiar el resultado final. El cortocircuito puede mejorar el rendimiento si la expresión omitida es compleja o si implica llamadas a procedimientos.
Si ambas expresiones se evalúan como True
, result
es True
. En la tabla siguiente, se muestra cómo se determina result
.
Si expression1 es |
Y expression2 es |
El valor de result es |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(sin evaluar) | False |
Nota
En una comparación booleana, el operador And
siempre evalúa ambas expresiones, lo que podría incluir la realización de llamadas a procedimientos. El operador AndAlso realiza un cortocircuito, lo que significa que si expression1
es False
, expression2
no se evalúa.
Tipo de datos
El operador AndAlso
solo se define para el tipo de datos booleano. Visual Basic convierte cada operando según sea necesario en Boolean
antes de evaluar la expresión. Si asigna el resultado a un tipo numérico, Visual Basic lo convierte de Boolean
a ese tipo, de forma que False
se convierte 0
en y True
se convierte en -1
.
Para más información, consulte las conversiones de tipos booleanos.
Sobrecarga
El operador And y el operador IsFalse pueden sobrecargarse, lo que significa que una clase o estructura puede redefinir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. La sobrecarga de los operadores And
y IsFalse
afecta al comportamiento del operador AndAlso
. Si el código usa AndAlso
en una clase o estructura que sobrecarga And
y IsFalse
, asegúrese de comprender su comportamiento redefinido. Para obtener más información, consulta Operator Procedures.
Ejemplo 1
En el ejemplo siguiente se usa el operador AndAlso
para realizar una conjunción lógica en dos expresiones. El resultado es un valor Boolean
que representa si se cumple toda la expresión de unión. Si la primera expresión es False
, no se evalúa la segunda.
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
En el ejemplo anterior, se generan los resultados True
, False
y False
, respectivamente. En el cálculo de secondCheck
, la segunda expresión no se evalúa porque la primera ya es False
. Sin embargo, la segunda expresión se evalúa en el cálculo de thirdCheck
.
Ejemplo 2
En el ejemplo siguiente, se muestra un procedimiento Function
que busca un valor determinado entre los elementos de una matriz. Si la matriz está vacía o si se superó su longitud, la instrucción While
no prueba el elemento de matriz respecto del valor de búsqueda.
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