If...Then...Else-Anweisung (Visual Basic)

Führt bedingt eine Gruppe von Anweisungen aus, abhängig vom Wert eines Ausdrucks.

Syntax

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

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

Dieser Artikel enthält mehrere Beispiele, die die Verwendung der If...Then ...Else Anweisung:

Bestandteile

condition
Erforderlich. Ausdruck Muss zu True oder oder Falsezu einem Datentyp ausgewertet werden, der implizit in konvertierbar ist Boolean.

Wenn der Ausdruck eine Nullable-VariableBooleanist, die nothing auswertet, wird die Bedingung behandelt, als ob der Ausdruck ist False, und die ElseIf Blöcke werden ausgewertet, falls vorhanden, oder der Else Block wird ausgeführt, wenn er vorhanden ist.

Then
Erforderlich in der Einzelzeilensyntax; optional in der Mehrzeilensyntax.

statements
Optional. Eine oder mehrere Anweisungen folgen If...Then die ausgeführt werden, wenn condition sie Trueausgewertet werden.

elseifcondition
Erforderlich, wenn ElseIf vorhanden ist. Ausdruck Muss zu True oder oder Falsezu einem Datentyp ausgewertet werden, der implizit in konvertierbar ist Boolean.

elseifstatements
Optional. Eine oder mehrere Anweisungen folgen ElseIf...Then die ausgeführt werden, wenn elseifcondition sie Trueausgewertet werden.

elsestatements
Optional. Mindestens eine Anweisung, die ausgeführt wird, wenn kein vorheriger condition oder elseifcondition Ausdruck ausgewertet wird True.

End If
Beendet die mehrlinienige Version von If...Then ...Else Block.

Hinweise

Mehrliniensyntax

Wenn ein If...Then ...Else Die Anweisung ist aufgetreten, condition wird getestet. Wenn condition dies der Grund ist True, werden die folgenden Then Anweisungen ausgeführt. Wenn condition dies der Fall ist False, wird jede ElseIf Anweisung (sofern vorhanden) in der Reihenfolge ausgewertet. Wenn eine Trueelseifcondition gefunden wird, werden die Anweisungen unmittelbar nach der zugeordneten ElseIf Ausführung ausgeführt. Wenn keine elseifcondition Auswertungen Trueausgeführt werden oder wenn keine ElseIf Anweisungen vorhanden sind, werden die folgenden Else Anweisungen ausgeführt. Nach dem Ausführen der Anweisungen nach Then, ElseIfoder Else, wird die Ausführung mit der folgenden End IfAnweisung fortgesetzt.

Die ElseIf beiden Klauseln Else sind optional. Sie können beliebig viele ElseIf Klauseln in einer If...Then ...Else anweisung, aber keine ElseIf Klausel kann nach einer Else Klausel angezeigt werden. If...Then ...Else Anweisungen können ineinander geschachtelt werden.

In der mehrzeiligen Syntax muss die If Anweisung die einzige Anweisung in der ersten Zeile sein. Die ElseIfAnweisungen Elseund End If Anweisungen können nur durch eine Zeilenbezeichnung vorangestellt werden. Die If...Then ...Else block muss mit einer End If Anweisung enden.

Tipp

Die Option... Case-Anweisung kann nützlicher sein, wenn Sie einen einzelnen Ausdruck auswerten, der mehrere mögliche Werte aufweist.

Single-Line Syntax

Sie können die Einzelzeilensyntax für eine einzelne Bedingung mit Code verwenden, um auszuführen, wenn dies wahr ist. Die Mehrfachzeilensyntax bietet jedoch mehr Struktur und Flexibilität und ist einfacher zu lesen, zu verwalten und zu debuggen.

Was dem Then Schlüsselwort folgt, wird untersucht, um zu bestimmen, ob eine Anweisung eine einzelne Zeile Ifist. Wenn ein anderer Kommentar als ein Kommentar in Then derselben Zeile angezeigt wird, wird die Anweisung als einzelzeilige If Anweisung behandelt. Falls Then nicht vorhanden, muss es der Anfang einer mehrfachzeiligen ...IfThen ...Else.

In der Einzelzeilensyntax können Sie mehrere Anweisungen als Ergebnis einer IfEntscheidung ...Then ausführen. Alle Anweisungen müssen sich auf derselben Linie befinden und durch Doppelpunkte getrennt werden.

Beispiel für eine mehrstufige Syntax

Im folgenden Beispiel wird die Verwendung der mehrlinienigen Syntax der If...Then ...Else Anweisung.

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.

Beispiel für geschachtelte Syntax

Das folgende Beispiel enthält geschachtelte If...Then ...Else Aussagen.

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.

Beispiel für Single-Line Syntax

Im folgenden Beispiel wird die Verwendung der Einzelzeilensyntax veranschaulicht.

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

Weitere Informationen