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

Consulte también