Compartir a través de


OrElse (Operador)

Actualización: noviembre 2007

Realiza una disyunción lógica inclusiva "cortocircuitada" en dos expresiones.

result = expression1 OrElse expression2

Partes

  • result
    Obligatorio. Cualquier expresión de tipo Boolean.

  • expression1
    Obligatorio. Cualquier expresión de tipo Boolean.

  • expression2
    Obligatorio. Cualquier expresión de tipo Boolean.

Comentarios

Se dice que una operación lógica se encuentra cortocircuitada si el código compilado puede omitir la evaluación de una expresión en función del resultado de otra. 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 cambiará el resultado final. La evaluación cortocircuitada puede mejorar el rendimiento si la expresión omitida es compleja o si implica llamadas de procedimiento.

Si una o ambas expresiones se evalúan como True, result es True. La tabla siguiente ilustra cómo se determina el argumento result.

Si expression1 es:

Y expression2 es

El valor de result es

True

(no se evalúa)

True

False

True

True

False

False

False

Tipos de datos

El operador OrElse sólo se define para Boolean (Tipo de datos, Visual Basic). Visual Basic convierte cada operando tal como sea necesario en Boolean y realiza toda la operación en Boolean. Si asigna el resultado a un tipo numérico, Visual Basic lo convierte de Boolean a ese tipo. Esto podría generar un comportamiento inesperado. Por ejemplo, 5 OrElse 12 tiene como resultado –1 cuando se convierte en Integer.

Sobrecarga

Or (Operador, Visual Basic) e IsTrue (Operador) se pueden sobrecargar, lo que significa que una clase o estructura puede definir de nuevo su comportamiento cuando un operando tiene el tipo de dicha clase o estructura. La sobrecarga de los operadores Or e IsTrue afecta al comportamiento del operador OrElse. Si el código utiliza OrElse en una clase o estructura que sobrecarga Or e IsTrue, asegúrese de conocer su comportamiento redefinido. Para obtener más información, vea Procedimientos de operador.

Ejemplo

En el ejemplo siguiente se usa el operador OrElse para realizar una disyunción lógica entre dos expresiones. El resultado será un valor de tipo Boolean que indicará si alguna de las dos expresiones es verdadera (True). Si la primera expresión es True, la segunda no será evaluada.

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b OrElse b > c
secondCheck = b > a OrElse b > c
thirdCheck = b > a OrElse c > b

El ejemplo anterior genera unos resultados de True, True y False, respectivamente. En el cálculo de firstCheck, no se evalúa la segunda expresión porque la primera ya es True. Sin embargo, la segunda expresión se evalúa en el cálculo de secondCheck.

En el ejemplo siguiente se muestra la instrucción If...Then que contiene dos llamadas a procedimientos. Si la primera llamada devuelve True, no se llama al segundo procedimiento. Esto puede generar resultados inesperados si el segundo procedimiento realiza tareas importantes que se deben realizar siempre que se ejecute esta sección del código.

If testFunction(5) = True OrElse otherFunction(4) = True Then
    ' If testFunction(5) is True, otherFunction(4) is not called.
    ' Insert code to be executed.
End If

Vea también

Conceptos

Operadores lógicos y bit a bit en Visual Basic

Referencia

Operadores lógicos y operadores bit a bit

Prioridad de operador en Visual Basic

Operadores enumerados por funcionalidad

Or (Operador, Visual Basic)

IsTrue (Operador)