If – operátor (Visual Basic)If Operator (Visual Basic)

Nástroj používá k podmíněnému vrácení jedné ze dvou hodnot hodnocení krátkodobého okruhu.Uses short-circuit evaluation to conditionally return one of two values. Operátor If lze volat se třemi argumenty nebo dvěma argumenty.The If operator can be called with three arguments or with two arguments.

SyntaxeSyntax

If( [argument1,] argument2, argument3 )

If volal operátor se třemi argumentyIf operator called with three arguments

Když je If volána pomocí tří argumentů, první argument musí být vyhodnocen na hodnotu, která může být převedena jako Boolean.When If is called by using three arguments, the first argument must evaluate to a value that can be cast as a Boolean. Tato Boolean hodnota určuje, který z dalších dvou argumentů bude vyhodnocen a vrácen.That Boolean value will determine which of the other two arguments is evaluated and returned. Následující seznam platí pouze v případě, že je operátor If volán pomocí tří argumentů.The following list applies only when the If operator is called by using three arguments.

SoučástiParts

TermínTerm DefiniceDefinition
argument1 Požadováno.Required. Boolean.Boolean. Určuje, který z dalších argumentů má být vyhodnocen a vrácen.Determines which of the other arguments to evaluate and return.
argument2 Požadováno.Required. Object.Object. Vyhodnoceno a vráceno, pokud argument1 vyhodnocuje jako True.Evaluated and returned if argument1 evaluates to True.
argument3 Požadováno.Required. Object.Object. Vyhodnoceno a vráceno, pokud argument1 vyhodnocuje jako False nebo pokud argument1 jeBoolean proměnná s možnou hodnotou null , která je vyhodnocena jako Nothing.Evaluated and returned if argument1 evaluates to False or if argument1 is a NullableBoolean variable that evaluates to Nothing.

Operátor If, který se nazývá se třemi argumenty, funguje jako IIf funkce s tím rozdílem, že používá testování pomocí krátkého okruhu.An If operator that is called with three arguments works like an IIf function except that it uses short-circuit evaluation. Funkce IIf vždy vyhodnocuje všechny tři argumenty, zatímco operátor If, který má tři argumenty, vyhodnocuje pouze dva z nich.An IIf function always evaluates all three of its arguments, whereas an If operator that has three arguments evaluates only two of them. Vyhodnotí se první argument If a výsledek se přetypování jako Boolean hodnota, True nebo False.The first If argument is evaluated and the result is cast as a Boolean value, True or False. Pokud je hodnota True, vyhodnotí se argument2 a vrátí se její hodnota, ale argument3 není vyhodnocena.If the value is True, argument2 is evaluated and its value is returned, but argument3 is not evaluated. Pokud je hodnota výrazu Boolean False, je vyhodnocen argument3 a jeho hodnota je vrácena, ale argument2 není vyhodnocena.If the value of the Boolean expression is False, argument3 is evaluated and its value is returned, but argument2 is not evaluated. Následující příklady ilustrují použití If, když se používají tři argumenty: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"))

Následující příklad znázorňuje hodnotu vyhodnocování krátkodobého okruhu.The following example illustrates the value of short-circuit evaluation. Příklad ukazuje dva pokusy o dělení number proměnných podle proměnných divisor kromě případů, kdy je divisor nula.The example shows two attempts to divide variable number by variable divisor except when divisor is zero. V takovém případě by měl být vrácen 0 a žádný pokus o provedení dělení, protože by došlo k chybě za běhu.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. Vzhledem k tomu, že výraz If používá testování pomocí krátkého okruhu, vyhodnocuje buď druhý, nebo třetí argument v závislosti na hodnotě prvního argumentu.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. Pokud je první argument true, dělitel není nula a je bezpečné vyhodnotit druhý argument a provést dělení.If the first argument is true, the divisor is not zero and it is safe to evaluate the second argument and perform the division. Pokud je první argument false, je vyhodnocen pouze třetí argument a je vrácena hodnota 0.If the first argument is false, only the third argument is evaluated and a 0 is returned. Proto pokud je dělitel 0, není proveden žádný pokus o provedení dělení a žádné výsledky chyby.Therefore, when the divisor is 0, no attempt is made to perform the division and no error results. Vzhledem k tomu, že IIf nepoužívá vyhodnocování krátkých okruhů, je druhý argument vyhodnocen i v případě, že je první argument nepravdivý.However, because IIf does not use short-circuit evaluation, the second argument is evaluated even when the first argument is false. Tím dojde k chybě dělení nulou v době běhu.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))

If volal operátor se dvěma argumentyIf operator called with two arguments

První argument pro If lze vynechat.The first argument to If can be omitted. To umožňuje operátorovi zavolat pouze pomocí dvou argumentů.This enables the operator to be called by using only two arguments. Následující seznam platí pouze v případě, že je operátor If volán se dvěma argumenty.The following list applies only when the If operator is called with two arguments.

SoučástiParts

TermínTerm DefiniceDefinition
argument2 Požadováno.Required. Object.Object. Musí se jednat o odkaz nebo typ s možnou hodnotou null.Must be a reference or nullable type. Vyhodnoceno a vráceno, když se vyhodnotí jako cokoli jiného než Nothing.Evaluated and returned when it evaluates to anything other than Nothing.
argument3 Požadováno.Required. Object.Object. Vyhodnoceno a vráceno, pokud argument2 vyhodnocuje jako Nothing.Evaluated and returned if argument2 evaluates to Nothing.

Při vynechání argumentu Boolean musí být prvním argumentem odkaz nebo typ s možnou hodnotou null.When the Boolean argument is omitted, the first argument must be a reference or nullable type. Pokud je první argument vyhodnocen jako Nothing, je vrácena hodnota druhého argumentu.If the first argument evaluates to Nothing, the value of the second argument is returned. Ve všech ostatních případech je vrácena hodnota prvního argumentu.In all other cases, the value of the first argument is returned. Následující příklad ukazuje, jak Toto vyhodnocení funguje: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))

Viz také:See also