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

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

Syntax

' 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 Prohlášení:

Součásti

condition
Povinná hodnota. Výraz. Musí se vyhodnotit True na nebo nebo na datový False typ, který je implicitně převoditelný na Boolean .

Pokud je výraz proměnná s možnou hodnotou Null, která se vyhodnotí jako Nothing, podmínka se bude považovat za výraz , a bloky se vyhodnotí, pokud existují, nebo se blok spustí, pokud Boolean False ElseIf Else existuje.

Then
Vyžaduje se v syntaxi s jedním řádkem. Ve víceřádkové syntaxi je volitelné.

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

elseifcondition
Vyžaduje se, ElseIf pokud je k dispozici. Výraz. Musí se vyhodnotit True na nebo nebo na datový False typ, který je implicitně převoditelný na Boolean .

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

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

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

Poznámky

Víceřádkové syntaxe

Když If ... Then ...Else je zjištěn příkaz , condition testuje se. Pokud condition je , spustí se následující True Then příkazy. Pokud condition je , vyhodnotí se každý příkaz False ElseIf (pokud existuje) v pořadí. Když je True elseifcondition nalezen, příkazy bezprostředně po přidružené ElseIf jsou provedeny. Pokud se elseifcondition no vyhodnotí True jako , nebo pokud neexistují žádné ElseIf příkazy, spustí se následující Else příkazy. Po provedení následujících příkazů Then , nebo pokračuje provádění s ElseIf Else příkazem následujícího za End If .

Klauzule ElseIf Else a jsou volitelné. V bodě můžete mít tolik klauzulí, kolik ElseIf If chcete. Then ...Else příkaz , ale za ElseIf klauzulí se nemůže objevit žádná Else klauzule. If...Then ...Else Příkazy mohou být vnořené mezi sebou.

Ve víceřádkové syntaxi If musí být příkaz jediným příkazem na prvním řádku. Před ElseIf příkazy , a může Else End If předcházet jenom popisek řádku. ... If Then ...Else blok musí končít End If příkazem .

Tip

V okně Vybrat... 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.

Single-Line syntaxe

Pro jednu podmínku s kódem, který se má spustit, pokud je true, můžete použít jednosoučtovou syntaxi. Syntaxe s více řádky však poskytuje větší strukturu a flexibilitu a usnadňuje čtení, údržbu a ladění.

Co následuje za Then klíčovým slovem , se zkoumá, aby se zjistilo, jestli je příkaz jedno řádky If . Pokud se za na stejném řádku zobrazí něco jiného než komentář, je příkaz považován za jedno Then If řádkový příkaz. Pokud chybí, musí to být začátek více řádků Then If ... Then ...Else.

V jedno řádkové syntaxi můžete v důsledku rozhodnutí ... provést If více Then 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 Prohlášení.

Module Multiline
    Public Sub Main()
        '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)
    End Sub
End Module
'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 Příkazy.

Module Nested
    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
End Module
'This example displays output like the following:
'Time Check is False.

Single-Line příklad syntaxe

Následující příklad znázorňuje použití jednos řádkové syntaxe.

Module SingleLine
    Public Sub Main()

        '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
End Module
'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é