Compartir a través de


Operador AndAlso (Visual Basic)

Realiza una combinación lógica de cortocircuito en dos expresiones.

Sintaxis

result = expression1 AndAlso expression2  

Partes

Término Definición
result Obligatorio. Cualquier Boolean expresión. El resultado es el Boolean resultado de la comparación de las dos expresiones.
expression1 Obligatorio. Cualquier Boolean expresión.
expression2 Obligatorio. Cualquier Boolean expresión.

Observaciones

Se dice que una operación lógica es 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 result se determina.

Si expression1 es Y expression2 es El valor de result es
True True True
True False False
False (no evaluado) False

Nota:

En una comparación booleana, el And operador siempre evalúa ambas expresiones, lo que podría incluir realizar llamadas a procedimiento. El operador AndAlso realiza un cortocircuito, lo que significa que, si expression1 es False, expression2 no se evalúa.

Tipos de datos

El AndAlso operador solo se define para el tipo de datos booleano. Visual Basic convierte cada operando según sea necesario para 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 tal forma que False se 0 convierte en y True se convierte en -1. Para obtener más información, vea Conversiones de tipos booleanos.

Sobrecarga

El operador And y el operador IsFalse se pueden sobrecargar, 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 And operadores y IsFalse afecta al comportamiento del AndAlso operador . 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, vea Procedimientos de operador.

Ejemplo 1

En el ejemplo siguiente se usa el AndAlso operador para realizar una combinación lógica en dos expresiones. El resultado es un Boolean valor que representa si toda la expresión adjunta es true. 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 resultados de True, Falsey False, respectivamente. En el cálculo de secondCheck, la segunda expresión no se evalúa porque la primera ya Falsees . Sin embargo, la segunda expresión se evalúa en el cálculo de thirdCheck.

Ejemplo 2

En el ejemplo siguiente se muestra un Function procedimiento que busca un valor determinado entre los elementos de una matriz. Si la matriz está vacía o si se ha superado la longitud de la matriz, la While instrucción no prueba el elemento de matriz con el 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