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 Booleanjako . 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 TrueFalse. Pokud je Truehodnota , argument2 je vyhodnocena a její hodnota je vrácena, ale argument3 není vyhodnocena. Pokud je Falsehodnota 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é numberdivisor 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))

Viz také