Condividi tramite


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 ] ]

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

Vedi anche