If – operátor (Visual Basic)
K podmíněnému vrácení jedné ze dvou hodnot se používá vyhodnocení zkratového okruhu. Operátor If
lze volat se třemi argumenty nebo se dvěma argumenty.
Syntaxe
If( [argument1,] argument2, argument3 )
Operátor If volaný se třemi argumenty
Pokud If
je volána pomocí tří argumentů, musí první argument vyhodnotit na hodnotu, která může být přetypována Boolean
jako . Tato Boolean
hodnota určí, který z dalších dvou argumentů se vyhodnotí a vrátí. Následující seznam platí pouze v případech, If
kdy je operátor volána pomocí tří argumentů.
Součástky
Pojem | definice |
---|---|
argument1 |
Povinný: Boolean . Určuje, které z dalších argumentů se mají vyhodnotit a vrátit. |
argument2 |
Povinný: Object . Vyhodnoceno a vráceno, pokud argument1 je vyhodnoceno jako True . |
argument3 |
Povinný: Object . Vyhodnoceno a vráceno, pokud argument1 se vyhodnotí jako False nebo pokud argument1 je proměnná NullableBoolean , která se vyhodnotí jako Nothing. |
Operátor If
, který je volána se třemi argumenty, funguje jako IIf
funkce s tím rozdílem, že používá vyhodnocení zkratového okruhu. Funkce IIf
vždy vyhodnotí všechny tři argumenty, zatímco If
operátor, který má tři argumenty, vyhodnotí pouze dva z nich. První If
argument se vyhodnotí a výsledek se přetypuje jako Boolean
hodnota nebo True
False
. Pokud je True
hodnota , argument2
je vyhodnocena a její hodnota je vrácena, ale argument3
není vyhodnocena. Pokud je False
hodnota výrazu Boolean
, argument3
je vyhodnocena a její hodnota je vrácena, ale argument2
není vyhodnocena. Následující příklady ilustrují použití If
, kdy se používají tři argumenty:
' 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 vyhodnocení zkratového okruhu. Příklad ukazuje dva pokusy o dělení proměnné number
divisor
proměnnou s výjimkou případů, kdy divisor
je nula. V takovém případě by se měla vrátit hodnota 0 a nemělo by dojít k žádnému pokusu o provedení dělení, protože výsledkem chyby za běhu. If
Vzhledem k tomu, že výraz používá vyhodnocení zkratového okruhu, vyhodnotí buď druhý, nebo třetí argument v závislosti na hodnotě prvního argumentu. Pokud je první argument pravdivý, dělitel není nulový a je bezpečné vyhodnotit druhý argument a provést dělení. Pokud je první argument nepravda, vyhodnotí se pouze třetí argument a vrátí se 0. Proto pokud je dělitel 0, není proveden žádný pokus o provedení dělení a žádné chybové výsledky. Vzhledem k tomu, že IIf
nepoužívá vyhodnocení zkratového okruhu, vyhodnotí se druhý argument i v případě, že je první argument nepravda. To způsobí chybu dělení za běhu nulou.
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))
Operátor If volaný se dvěma argumenty
První argument, který If
se má vynechat. To umožňuje volat operátor pouze pomocí dvou argumentů. Následující seznam platí pouze v případech, If
kdy je operátor volána se dvěma argumenty.
Součástky
Pojem | definice |
---|---|
argument2 |
Povinný: Object . Musí to být odkaz nebo typ hodnoty s možnou hodnotou null. Vyhodnoceno a vráceno, když se vyhodnotí na cokoli jiného než Nothing . |
argument3 |
Povinný: Object . Vyhodnoceno a vráceno, pokud argument2 je vyhodnoceno jako Nothing . |
Boolean
Pokud argument vynecháte, musí být prvním argumentem odkaz nebo typ hodnoty nullable. Pokud se první argument vyhodnotí jako Nothing
, vrátí se hodnota druhého argumentu. Ve všech ostatních případech se vrátí hodnota prvního argumentu. Následující příklad ukazuje, jak toto vyhodnocení funguje:
' 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))