If...Then...Else – příkaz (Visual Basic)

Podmíněně spustí skupinu příkazů v závislosti na hodnotě výrazu.

Syntaxe

' Multiline syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]

Tento článek obsahuje několik příkladů, které ilustrují použití If...Then...Else výrok:

Součástky

condition
Povinný: Výraz. Musí být vyhodnocen na True datový typ nebo Falsedatový typ, který je implicitně konvertibilní na Boolean.

Pokud je výraz proměnnou NullableBoolean, která se vyhodnotí jako Nothing, podmínka se považuje za výraz Falsea ElseIf bloky se vyhodnotí, pokud existují, nebo Else se blok spustí, pokud existuje.

Then
Požadováno v jednořádkové syntaxi; volitelné v víceřádkové syntaxi.

statements
Nepovinné. Jeden nebo více příkazů, které následují If...Then se spustí, pokud condition se vyhodnotí jako True.

elseifcondition
Vyžaduje se, pokud ElseIf je k dispozici. Výraz. Musí být vyhodnocen na True datový typ nebo Falsedatový typ, který je implicitně konvertibilní na Boolean.

elseifstatements
Nepovinné. Jeden nebo více příkazů, které následují ElseIf...Then se spustí, pokud elseifcondition se vyhodnotí jako True.

elsestatements
Nepovinné. Jeden nebo více příkazů, které se spustí, pokud se nevyhodnotí Truežádný předchozí condition výraz nebo elseifcondition výraz .

End If
Ukončí víceřádkové verze If...Then...Else blokovat.

Poznámky

Víceřádkové syntaxe

Když ...IfThen...Else je zjištěn příkaz, condition je testován. Pokud condition ano True, spustí se následující Then příkazy. Pokud condition ano False, vyhodnocuje se každý ElseIf příkaz (pokud existuje) v pořadí. True elseifcondition Po nalezení se příkazy okamžitě za přidruženými ElseIf příkazy spustí. Pokud se žádná elseifcondition hodnota nevyhodnotí Truenebo pokud neexistují žádné ElseIf příkazy, spustí se následující Else příkazy. Po provedení následujících ThenElseIfpříkazů , nebo Else, provádění pokračuje s následujícím End Ifpříkazem .

Klauzule ElseIf i Else klauzule jsou volitelné. Můžete mít tolik ElseIf klauzulí, kolik chcete v ...IfThen...Else příkaz, ale za klauzulí Else se nemůže objevit žádná ElseIf klauzule. If...Then...Else příkazy se dají vnořit do sebe.

Ve víceřádkové syntaxi musí být příkaz If jediným příkazem na prvním řádku. Před ElseIfpříkazy , Elsea End If příkazy lze předcházet pouze popiskem řádku. Then...If...Else blok musí končit příkazemEnd If.

Tip

Výběr ... Příkaz Case může být užitečnější při vyhodnocování jednoho výrazu, který má několik možných hodnot.

Syntaxe s jedním řádkem

Pro jednu podmínku s kódem můžete použít jednořádkovou syntaxi, která se má provést, pokud je pravdivá. Syntaxe s více řádky ale poskytuje větší strukturu a flexibilitu a usnadňuje čtení, údržbu a ladění.

Co následuje za klíčovým slovem Then , je zkoumáno, aby bylo možné určit, zda je příkazem jeden řádek If. Pokud se za stejným řádkem zobrazí Then cokoli jiného než komentář, příkaz se považuje za příkaz s jedním řádkem If . Pokud Then chybí, musí to být začátek multiple-line If...Then...Else.

V jednořádkové syntaxi můžete mít v důsledku Ifrozhodnutí ...Then spuštěno více příkazů. Všechny příkazy musí být na stejném řádku a musí být oddělené dvojtečkami.

Příklad víceřádkové syntaxe

Následující příklad znázorňuje použití víceřádkové syntaxe If...Then...Else výrok.

'Create a Random object to seed our starting value 
Dim randomizer As New Random()
'set our variable
Dim count As Integer = randomizer.Next(0, 5)

Dim message As String

'If count is zero, output will be no items
If count = 0 Then
    message = "There are no items."
    'If count is 1, output will be "There is 1 item.".        
ElseIf count = 1 Then
    message = "There is 1 item."
    'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count. 
Else
    message = $"There are {count} items."
End If

Console.WriteLine(message)

'This example displays output like the following:
' There are 4 items.

Příklad vnořené syntaxe

Následující příklad obsahuje vnořené If...Then...Else výroky.

Public Sub Main()
    ' Run the function as part of the WriteLine output.
    Console.WriteLine("Time Check is " & CheckIfTime() & ".")
End Sub

Private Function CheckIfTime() As Boolean
    ' Determine the current day of week and hour of day.
    Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
    Dim hour As Integer = DateTime.Now.Hour

    ' Return True if Wednesday from 2 to 3:59 P.M.,
    ' or if Thursday from noon to 12:59 P.M.
    If dayW = DayOfWeek.Wednesday Then
        If hour = 14 Or hour = 15 Then
            Return True
        Else
            Return False
        End If
    ElseIf dayW = DayOfWeek.Thursday Then
        If hour = 12 Then
            Return True
        Else
            Return False
        End If
    Else
        Return False
    End If
End Function

'This example displays output like the following:
'Time Check is False.

Příklad jednořádkové syntaxe

Následující příklad ukazuje použití jednořádkové syntaxe.

Private Sub SingleLine()

    'Create a Random object to seed our starting values 
    Dim randomizer As New Random()

    Dim A As Integer = randomizer.Next(10, 20)
    Dim B As Integer = randomizer.Next(0, 20)
    Dim C As Integer = randomizer.Next(0, 5)

    'Let's display the initial values for comparison
    Console.WriteLine($"A value before If: {A}")
    Console.WriteLine($"B value before If: {B}")
    Console.WriteLine($"C value before If: {C}")

    ' If A > 10, execute the three colon-separated statements in the order
    ' that they appear
    If A > 10 Then A = A + 1 : B = B + A : C = C + B

    'If the condition is true, the values will be different
    Console.WriteLine($"A value after If: {A}")
    Console.WriteLine($"B value after If: {B}")
    Console.WriteLine($"C value after If: {C}")

End Sub

'This example displays output like the following:
'A value before If: 11
'B value before If: 6
'C value before If: 3
'A value after If: 12
'B value after If: 18
'C value after If: 21

Viz také