Dela via


Om... Då... Else-instruktion (Visual Basic)

Kör villkorligt en grupp med instruktioner, beroende på värdet för ett uttryck.

Syntax

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

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

Den här artikeln innehåller flera exempel som illustrerar användning av If...Then...Else uttalande:

Delar

condition
Obligatoriskt. Uttryck. Måste utvärdera till True eller False, eller till en datatyp som implicit kan konverteras till Boolean.

Om uttrycket är en nullbar Boolean variabel som utvärderas till Ingenting behandlas villkoret som om uttrycket är False, och blocken ElseIf utvärderas om de finns, eller Else så körs blocket om det finns.

Then
Krävs i enradssyntaxen. valfritt i syntaxen för flera ledningar.

statements
Valfritt. En eller flera instruktioner som följer If...Then som körs om condition utvärderas till True.

elseifcondition
Krävs om ElseIf finns. Uttryck. Måste utvärdera till True eller False, eller till en datatyp som implicit kan konverteras till Boolean.

elseifstatements
Valfritt. En eller flera instruktioner som följer ElseIf...Then som körs om elseifcondition utvärderas till True.

elsestatements
Valfritt. En eller flera instruktioner som körs om inget tidigare condition uttryck eller elseifcondition uttryck utvärderas till True.

End If
Avslutar flerradsversionen av If...Then...Else block.

Kommentarer

Syntax för flera ledningar

När en If...Then...Else -instruktionen påträffas, condition testas. Om condition är Truekörs följande Then instruktioner. Om condition är Falseutvärderas varje ElseIf -instruktion (om det finns några) i ordning. När en True elseifcondition hittas körs instruktionerna omedelbart efter de associerade ElseIf . Om inga elseifcondition utvärderas till True, eller om det inte finns några ElseIf instruktioner, körs följande Else instruktioner. När du har kört -instruktionerna efter Thenkörningen av , ElseIf, eller Elsefortsätter körningen med -instruktionen efter End If.

ElseIf Satserna och Else är båda valfria. Du kan ha så många ElseIf satser som du vill i en If...Then...Else -instruktion, men ingen sats ElseIf kan visas efter en Else sats. If...Then...Else -instruktioner kan kapslas inom varandra.

I syntaxen för flera rader måste -instruktionen If vara den enda instruktionen på den första raden. Instruktionen ElseIf, Elseoch End If kan endast föregås av en radetikett. Then...If...Else blocket måste avslutas med en End If -instruktion.

Dricks

Välj ... Case Statement kan vara mer användbart när du utvärderar ett enda uttryck som har flera möjliga värden.

Enradssyntax

Du kan använda enradssyntaxen för ett enda villkor med kod för att köra om det är sant. Syntaxen med flera rader ger dock mer struktur och flexibilitet och är enklare att läsa, underhålla och felsöka.

Vad som följer nyckelordet Then undersöks för att avgöra om en -instruktion är en enskild rad If. Om något annat än en kommentar visas efter Then på samma rad behandlas -instruktionen som en enda rad-instruktion If . Om Then saknas måste det vara början på en flerradig If...Then...Else.

I enradssyntaxen kan du köra flera instruktioner som ett resultat av ett If...Then -beslut. Alla instruktioner måste finnas på samma rad och avgränsas med kolon.

Exempel på flerradssyntax

I följande exempel visas användningen av syntaxen för flera ledningar för If...Then...Else uttalande.

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

Exempel på kapslad syntax

Följande exempel innehåller kapslade If...Then...Else Uttalanden.

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.

Exempel på enradssyntax

I följande exempel visas användningen av enradssyntax.

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

Se även