If (Operador) (Visual Basic)

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

Sintaxis

If( [argument1,] argument2, argument3 )

Operador If llamado 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 If llama al operador mediante tres argumentos.

Partes

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

Un If operador al que se llama con tres argumentos funciona como una función, salvo que usa la evaluación IIf de cortocircuito. Una función siempre evalúa los tres argumentos, mientras que un operador que tiene tres argumentos evalúa IIf solo dos de If ellos. Se evalúa If el primer argumento y el resultado se convierte como un Boolean True valor, o False . Si el valor es True , se evalúa y se devuelve su argument2 valor, pero no se argument3 evalúa. Si el valor de la expresión es , se evalúa y se devuelve su Boolean False argument3 valor, pero argument2 no se evalúa. En los ejemplos siguientes se muestra el uso If de 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 la evaluación de cortocircuito. En el ejemplo se muestran dos intentos de dividir variable number por divisor variable, excepto cuando divisor es cero. En ese caso, se debe devolver un valor 0 y no se debe intentar realizar la división porque se produciría un error en tiempo de ejecución. Dado que la expresión usa la evaluación de cortocircuito, evalúa el segundo o el tercer argumento, en función del valor If 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 realiza ningún intento de realizar la división y no se produce ningún error. Sin embargo, dado que no usa la evaluación de cortocircuito, el segundo argumento se evalúa incluso IIf cuando el primer argumento es false. Esto produce un error de división por cero en tiempo de ejecución.

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 llamado con dos argumentos

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

Partes

Término Definición
argument2 Obligatorio. Object. Debe ser un tipo de valor de referencia o que acepta valores NULL. Se evalúa y se devuelve cuando se evalúa como algo distinto de Nothing .
argument3 Obligatorio. Object. Se evalúa y se devuelve si argument2 se evalúa como Nothing .

Cuando se Boolean omite el argumento, el primer argumento debe ser un tipo de valor de referencia o 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))

Consulta también