Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 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 Trueelseifcondition, 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