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 ] ]
Snabblänkar till exempelkod
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 True
körs följande Then
instruktioner. Om condition
är False
utvä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 Then
körningen av , ElseIf
, eller Else
fortsä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
, Else
och 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