AndAlso (Operador, Visual Basic)

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

Syntax

result = expression1 AndAlso expression2  

Partes

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

Comentarios

Se dice que una operación lógica está cortocircuando 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, porque 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 procedimientos. El operador AndAlso realiza un cortocircuito, lo que significa que si expression1 es , no se False expression2 evalúa.

Tipo de datos

El AndAlso operador solo se define para el tipo de datos booleano. Visual Basic convierte cada operando según sea necesario antes Boolean de evaluar la expresión. Si asigna el resultado a un tipo numérico, Visual Basic convierte de a ese tipo de modo que Boolean se convierta en y se convierta en False 0 True -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 volver a definir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. Sobrecargar los And operadores y afecta al comportamiento del IsFalse AndAlso operador. Si el código usa en una clase o estructura que sobrecarga y , asegúrese de AndAlso que comprende su comportamiento And IsFalse redefinido. Para obtener más información, consulta Operator Procedures.

Ejemplo 1

En el ejemplo siguiente se usa AndAlso el operador para realizar una conjunción lógica en dos expresiones. El resultado es un valor que representa si toda la expresión Boolean unida es verdadera. 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 de , y , False 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 Function muestra un 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 instrucción no prueba el elemento de matriz While 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