Compartir a través de


Operador If (Visual Basic)

Usa la evaluación de cortocircuito para devolver condicionalmente uno de los dos valores. Se puede llamar al If operador con tres argumentos o con dos argumentos.

Sintaxis

If( [argument1,] argument2, argument3 )

Si se llama al operador con tres argumentos

Cuando If se llama mediante tres argumentos, el primer argumento debe evaluarse como un valor que se puede convertir como .Boolean Ese Boolean valor determinará cuál de los otros dos argumentos se evalúa y devuelve. La lista siguiente solo se aplica cuando se llama al If operador mediante tres argumentos.

Partes

Término Definición
argument1 Obligatorio. Boolean. Determina cuál de los otros argumentos que se van a evaluar y devolver.
argument2 Obligatorio. Object. Evaluado y devuelto si argument1 se evalúa como True.
argument3 Obligatorio. Object. Se evalúa y devuelve si se evalúa como argument1False o si argument1 es una variable que acepta valores NULLBoolean que se evalúa como Nothing.

Un If operador al que se llama con tres argumentos funciona como una IIf función, excepto que usa la evaluación de cortocircuito. Una IIf función siempre evalúa los tres argumentos, mientras que un If operador que tiene tres argumentos solo evalúa dos de ellos. El primer If argumento se evalúa y el resultado se convierte como un Boolean valor o TrueFalse. Si el valor es True, argument2 se evalúa y se devuelve su valor, pero argument3 no se evalúa. Si el valor de la Boolean expresión es False, argument3 se evalúa y se devuelve su valor, pero argument2 no se evalúa. En los ejemplos siguientes se muestra el uso de If cuando se usan tres argumentos:

' This statement prints TruePart, because the first argument is true.
Console.WriteLine(If(True, "TruePart", "FalsePart"))

' This statement prints FalsePart, because the first argument is false.
Console.WriteLine(If(False, "TruePart", "FalsePart"))

Dim number = 3
' With number set to 3, this statement prints Positive.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))

number = -1
' With number set to -1, this statement prints Negative.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))

En el ejemplo siguiente se muestra el valor de evaluación de cortocircuito. En el ejemplo se muestran dos intentos de dividir la variable number por variable divisor , excepto cuando divisor es cero. En ese caso, se debe devolver un 0 y no se debe intentar realizar la división porque se produciría un error en tiempo de ejecución. Dado que la If expresión usa la evaluación de cortocircuito, evalúa el segundo o el tercer argumento, en función del valor del primer argumento. Si el primer argumento es true, el divisor no es cero y es seguro evaluar el segundo argumento y realizar la división. Si el primer argumento es false, solo se evalúa el tercer argumento y se devuelve un 0. Por lo tanto, cuando el divisor es 0, no se intenta realizar la división y no se produce ningún resultado de error. Sin embargo, dado que IIf no usa la evaluación de cortocircuito, el segundo argumento se evalúa incluso cuando el primer argumento es false. Esto provoca un error de división en tiempo de ejecución por cero.

number = 12

' When the divisor is not 0, both If and IIf return 4.
Dim divisor = 3
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))

' When the divisor is 0, IIf causes a run-time error, but If does not.
divisor = 0
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
' Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))

Operador If al que se llama con dos argumentos

Se puede omitir el primer argumento que se va a If omitir. Esto permite llamar al operador mediante solo dos argumentos. La siguiente lista solo se aplica cuando se llama al If operador con dos argumentos.

Partes

Término Definición
argument2 Obligatorio. Object. Debe ser un tipo de valor que acepta valores NULL o de referencia. Evaluado y devuelto cuando se evalúa como cualquier otro que no sea Nothing.
argument3 Obligatorio. Object. Evaluado y devuelto si argument2 se evalúa como Nothing.

Cuando se omite el Boolean argumento, el primer argumento debe ser una referencia o un tipo de valor que acepta valores NULL. Si el primer argumento se evalúa como Nothing, se devuelve el valor del segundo argumento. En todos los demás casos, se devuelve el valor del primer argumento. En el ejemplo siguiente se muestra cómo funciona esta evaluación:

' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6

' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))

second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))

first = Nothing
second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))

Consulte también