Freigeben über


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 veranschaulichen:

Bestandteile

condition
Erforderlich. Ausdruck Muss als True oder False oder als ein Datentyp ausgewertet werden, der implizit in Boolean konvertiert werden kann.

Wenn es sich bei dem Ausdruck um eine Nullwerte zulassende Boolean-Variable handelt, die als Nothing ausgewertet wird, dann wird die Bedingung so behandelt, als ob der Ausdruck False lauten würde, und die ElseIf-Blöcke (sofern vorhanden) bzw. der Else-Block (sofern vorhanden) werden bzw. wird ausgeführt.

Then
In der einzeiligen Syntax erforderlich, in der mehrzeiligen Syntax optional.

statements
Optional. Eine oder mehrere Anweisungen nach If...Then, die ausgeführt werden, wenn condition als True ausgewertet wird.

elseifcondition
Erforderlich, wenn ElseIf vorhanden ist. Ausdruck Muss als True oder False oder als ein Datentyp ausgewertet werden, der implizit in Boolean konvertiert werden kann.

elseifstatements
Optional. Eine oder mehrere Anweisungen nach ElseIf...Then, die ausgeführt werden, wenn elseifcondition als True ausgewertet wird.

elsestatements
Optional. Eine oder mehrere Anweisungen, die ausgeführt werden, wenn kein vorheriger condition- oder elseifcondition-Ausdruck als True ausgewertet wird.

End If
Beendet die mehrzeilige Version eines If...Then ...Else-Blocks.

Bemerkungen

Mehrzeilige Syntax

Wird eine If...Then...Else-Anweisung gefunden, wird condition getestet. Bei einer Auswertung von condition als True werden die Anweisungen nach Then ausgeführt. Wird condition als False ausgewertet, wird jede ElseIf-Anweisung (falls vorhanden) der Reihe nach ausgewertet. Wenn True elseifcondition gefunden wird, werden die Anweisungen unmittelbar nach dem zugehörigen ElseIf-Element ausgeführt. Wenn keine elseifcondition als True ausgewertet wird, oder wenn keine ElseIf-Anweisungen vorhanden sind, werden die Anweisungen nach Else ausgeführt. Nach der Ausführung der Anweisungen nach Then, ElseIf oder Else wird die Ausführung mit der Anweisung nach End If fortgesetzt.

Die Klauseln ElseIf und Else sind optional. Sie können beliebig viele ElseIf-Klauseln in einer If...Then...Else-Anweisung verwenden, aber es darf keine ElseIf-Klausel nach einer Else-Klausel stehen. 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. Den Anweisungen ElseIf, Else und End If kann nur eine Zeilenbezeichnung vorangestellt werden. Der If...Then...Else-Block muss mit einer End If-Anweisung enden.

Tipp

Wenn Sie einen einzelnen Ausdruck auswerten, der über mehrere mögliche Werte verfügt, kann eine Select...Case-Anweisung sinnvoller sein.

Einzeilige Syntax

Sie können die einzeilige Syntax für eine einzelne Bedingung mit Code verwenden, der bei einer Auswertung der Bedingung als „true“ ausgeführt wird. Die mehrzeilige Syntax bietet jedoch mehr Struktur und Flexibilität und lässt sich leichter lesen, verwalten und debuggen.

Um festzustellen, ob es sich um eine einzeilige If-Anweisung handelt, wird geprüft, was auf das Schlüsselwort Then folgt. Wenn nach Then in derselben Zeile etwas anderes als ein Kommentar folgt, wird die Anweisung als einzeilige If Anweisung behandelt. Ist Then nicht vorhanden, muss es sich um den Beginn einer mehrzeiligen If...Then...Else-Anweisung handeln.

In der einzeiligen Syntax können Sie mehrere Anweisungen als Ergebnis einer If...Then-Entscheidung ausführen. Alle Anweisungen müssen sich in derselben Zeile befinden und durch Doppelpunkte voneinander getrennt sein.

Beispiel für die mehrzeilige Syntax

Das folgende Beispiel veranschaulicht die Verwendung der mehrzeiligen Syntax für die If...Then...Else-Anweisung.

'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.

Beispiel für die geschachtelte Syntax

Das folgende Beispiel enthält geschachtelte If...Then...Else-Anweisungen.

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.

Beispiel für die einzeilige Syntax

Das folgende Beispiel veranschaulicht die Verwendung der einzeiligen Syntax.

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

Siehe auch