If (Operador) (Visual Basic)If Operator (Visual Basic)

Utiliza la evaluación de cortocircuito para devolver condicionalmente uno de dos valores.Uses short-circuit evaluation to conditionally return one of two values. Se If puede llamar al operador con tres argumentos o con dos argumentos.The If operator can be called with three arguments or with two arguments.

SintaxisSyntax

If( [argument1,] argument2, argument3 )

Si el operador llamó con tres argumentosIf operator called with three arguments

Cuando If se llama mediante tres argumentos, el primer argumento debe evaluarse como un valor que se puede convertir como un Booleanarchivo .When If is called by using three arguments, the first argument must evaluate to a value that can be cast as a Boolean. Ese Boolean valor determinará cuál de los otros dos argumentos se evalúa y se devuelve.That Boolean value will determine which of the other two arguments is evaluated and returned. La lista siguiente solo If se aplica cuando se llama al operador mediante tres argumentos.The following list applies only when the If operator is called by using three arguments.

PartesParts

TérminoTerm DefiniciónDefinition
argument1 Necesario.Required. Boolean.Boolean. Determina cuál de los otros argumentos se va a evaluar y devolver.Determines which of the other arguments to evaluate and return.
argument2 Necesario.Required. Object.Object. Evaluado y devuelto argument1 si Truese evalúa como .Evaluated and returned if argument1 evaluates to True.
argument3 Necesario.Required. Object.Object. Evaluado y devuelto argument1 si False se argument1 evalúa como o si es una variable nullable Boolean que se evalúa como Nothing.Evaluated and returned if argument1 evaluates to False or if argument1 is a NullableBoolean variable that evaluates to Nothing.

Un If operador al que se llama IIf con tres argumentos funciona como una función, excepto que utiliza la evaluación de cortocircuito.An If operator that is called with three arguments works like an IIf function except that it uses short-circuit evaluation. Una IIf función siempre evalúa los tres argumentos, mientras que un If operador que tiene tres argumentos evalúa solo dos de ellos.An IIf function always evaluates all three of its arguments, whereas an If operator that has three arguments evaluates only two of them. El If primer argumento se evalúa y el Boolean resultado True Falsese convierte como un valor, o .The first If argument is evaluated and the result is cast as a Boolean value, True or False. Si el Truevalor argument2 es , se evalúa y argument3 se devuelve su valor, pero no se evalúa.If the value is True, argument2 is evaluated and its value is returned, but argument3 is not evaluated. Si el valor Boolean de False argument3 la expresión es , se argument2 evalúa y se devuelve su valor, pero no se evalúa.If the value of the Boolean expression is False, argument3 is evaluated and its value is returned, but argument2 is not evaluated. Los siguientes ejemplos ilustran el uso de If cuando se utilizan tres argumentos:The following examples illustrate the use of If when three arguments are used:

' 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 cortocircuitos.The following example illustrates the value of short-circuit evaluation. El ejemplo muestra dos number intentos divisor de divisor dividir variable por variable excepto cuando es cero.The example shows two attempts to divide variable number by variable divisor except when divisor is zero. 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.In that case, a 0 should be returned, and no attempt should be made to perform the division because a run-time error would result. Dado If que la expresión utiliza la evaluación de cortocircuito, evalúa el segundo o el tercer argumento, dependiendo del valor del primer argumento.Because the If expression uses short-circuit evaluation, it evaluates either the second or the third argument, depending on the value of the first argument. Si el primer argumento es true, el divisor no es cero y es seguro evaluar el segundo argumento y realizar la división.If the first argument is true, the divisor is not zero and it is safe to evaluate the second argument and perform the division. Si el primer argumento es false, solo se evalúa el tercer argumento y se devuelve un 0.If the first argument is false, only the third argument is evaluated and a 0 is returned. Por lo tanto, cuando el divisor es 0, no se intenta realizar la división y no se produce ningún error.Therefore, when the divisor is 0, no attempt is made to perform the division and no error results. Sin IIf embargo, dado que no utiliza la evaluación de cortocircuito, el segundo argumento se evalúa incluso cuando el primer argumento es false.However, because IIf does not use short-circuit evaluation, the second argument is evaluated even when the first argument is false. Esto provoca un error de división por cero en tiempo de ejecución.This causes a run-time divide-by-zero error.

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))

Si operador llamó con dos argumentosIf operator called with two arguments

Se puede If omitir el primer argumento que se puede omitir.The first argument to If can be omitted. Esto permite llamar al operador mediante el uso de solo dos argumentos.This enables the operator to be called by using only two arguments. La lista siguiente solo If se aplica cuando se llama al operador con dos argumentos.The following list applies only when the If operator is called with two arguments.

PartesParts

TérminoTerm DefiniciónDefinition
argument2 Necesario.Required. Object.Object. Debe ser un tipo de valor de referencia o que acepta valores NULL.Must be a reference or nullable value type. Evaluado y devuelto cuando se evalúa Nothingcomo algo distinto de .Evaluated and returned when it evaluates to anything other than Nothing.
argument3 Necesario.Required. Object.Object. Evaluado y devuelto argument2 si Nothingse evalúa como .Evaluated and returned if argument2 evaluates to Nothing.

Cuando Boolean se omite el argumento, el primer argumento debe ser una referencia o un tipo de valor que acepta valores NULL.When the Boolean argument is omitted, the first argument must be a reference or nullable value type. Si el primer argumento Nothingse evalúa como , se devuelve el valor del segundo argumento.If the first argument evaluates to Nothing, the value of the second argument is returned. En todos los demás casos, se devuelve el valor del primer argumento.In all other cases, the value of the first argument is returned. En el ejemplo siguiente se muestra cómo funciona esta evaluación:The following example illustrates how this evaluation works:

' 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))

Vea tambiénSee also