Istruzione If...Then...Else (Visual Basic) |
Esegue un gruppo di istruzioni in base a determinate condizioni, a seconda del valore di un'espressione.
Sintassi
' Multiline syntax:
If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If
' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]
Collegamenti rapidi al codice di esempio
Questo articolo include diversi esempi che illustrano gli usi dell’istruzione If
...Then
...Else
:
Parti
condition
Obbligatorio. Espressione. Deve restituire True
o False
, o un tipo di dati convertibile in modo implicito in Boolean
.
Se l'espressione è una variabile Boolean
Nullable che restituisce Nothing, la condizione viene considerata come se l'espressione fosse False
, e i blocchi ElseIf
vengono valutati se esistenti, oppure il blocco Else
viene eseguito se esistente.
Then
Obbligatorio nella sintassi a riga singola; facoltativo nella sintassi su più righe.
statements
Facoltativo. Una o più istruzioni che seguono If
...Then
che vengono eseguite se condition
restituisce True
.
elseifcondition
Obbligatorio se ElseIf
è presente. Espressione. Deve restituire True
o False
, o un tipo di dati convertibile in modo implicito in Boolean
.
elseifstatements
Facoltativo. Una o più istruzioni che seguono ElseIf
...Then
che vengono eseguite se elseifcondition
restituisce True
.
elsestatements
Facoltativo. Una o più istruzioni eseguite se nessuna espressione condition
o elseifcondition
precedente restituisce True
.
End If
Termina la versione multilinea del blocco If
...Then
...Else
.
Osservazioni:
Sintassi multilinea
Quando viene rilevata l'istruzione If
...Then
...Else
, viene testato condition
. Se condition
è True
, vengono eseguite le istruzioni successive a Then
. Se condition
è False
, ogni istruzione ElseIf
(se presente) viene valutata in ordine. Quando viene trovato un elemento elseifcondition
True
, vengono eseguite le istruzioni immediatamente successive all'istruzione ElseIf
associata. Se nessun elseifcondition
restituisce True
o se non ci sono istruzioni ElseIf
, vengono eseguite le istruzioni successive a Else
. Dopo aver eseguito le istruzioni successive a Then
, ElseIf
o Else
, l'esecuzione continua con l'istruzione successiva a End If
.
Le clausole ElseIf
e Else
sono entrambe facoltative. È possibile avere tutte le clausole ElseIf
desiderate in un’istruzione If
...Then
...Else
, ma nessuna clausola ElseIf
può essere visualizzata dopo una clausola Else
. Le istruzioni If
...Then
...Else
possono essere annidate tra loro.
Nella sintassi su più righe, l'istruzione If
deve essere l'unica istruzione nella prima riga. Le istruzioni ElseIf
, Else
e End If
possono essere precedute solo da un'etichetta di riga. Il blocco If
...Then
...Else
deve terminare con un'istruzione End If
.
Suggerimento
L’Istruzione Seleziona...Case può essere più utile quando si valuta una singola espressione con diversi valori possibili.
Sintassi a riga singola
È possibile usare la sintassi a riga singola per una singola condizione con codice da eseguire se è true. Tuttavia, la sintassi a più righe offre maggiore struttura e flessibilità ed è più facile da leggere, gestire, ed eseguirne il debug.
Di seguito viene esaminata la parola chiave Then
per determinare se un'istruzione è If
a riga singola. Se viene visualizzato un commento diverso da un commento dopo Then
sulla stessa riga, l'istruzione viene considerata come un'istruzione If
a riga singola. Se Then
è assente, deve essere l'inizio di una riga multipla If
...Then
...Else
.
Nella sintassi a riga singola è possibile eseguire più istruzioni come risultato di una decisione If
...Then
. Tutte le istruzioni devono trovarsi nella stessa riga e devono essere separate da due punti.
Esempio di sintassi su più righe
L'esempio seguente illustra l'uso della sintassi su più righe dell’istruzione If
...Then
...Else
.
'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.
Esempio di sintassi annidata
L'esempio seguente contiene istruzioni annidate If
...Then
...Else
.
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.
Esempio di sintassi a riga singola
Nell'esempio seguente viene illustrato l'uso della sintassi a riga singola.
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