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 di If...Then ...Else affermazione:

Parti

condition
Obbligatorio. Espressione. Deve restituire True o Falseo o a un tipo di dati convertibile in modo implicito in Boolean.

Se l'espressione è una variabile nullableBoolean che restituisce Nothing, la condizione viene considerata come se l'espressione sia Falsee i ElseIf blocchi vengono valutati se esistono oppure il Else blocco viene eseguito se esistente.

Then
Obbligatorio nella sintassi a riga singola; facoltativo nella sintassi multilinea.

statements
Facoltativa. 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 Falseo o a un tipo di dati convertibile in modo implicito in Boolean.

elseifstatements
Facoltativa. Una o più istruzioni che seguono ElseIf...Then che vengono eseguite se elseifcondition restituisce True.

elsestatements
Facoltativa. Una o più istruzioni eseguite se nessuna espressione o elseifcondition precedente condition restituisce True.

End If
Termina la versione multilinea di If...Then ...Else Blocco.

Commenti

Sintassi multilinea

Quando un ...IfThen ...Else viene rilevata l'istruzione , condition viene testata. Se condition è True, vengono eseguite le istruzioni seguenti Then . Se condition è False, ogni ElseIf istruzione (se presente) viene valutata in ordine. Quando viene trovato un oggetto Trueelseifcondition , le istruzioni immediatamente successive all'oggetto associato ElseIf vengono eseguite. Se non elseifcondition restituisce Trueo se non ElseIf sono presenti istruzioni, vengono eseguite le istruzioni seguenti Else . Dopo aver eseguito le istruzioni seguenti Then, ElseIfo Else, l'esecuzione continua con l'istruzione seguente End If.

Le ElseIf clausole e Else sono entrambe facoltative. È possibile avere tutte ElseIf le clausole desiderate in un If...Then ...Else istruzione, ma nessuna ElseIf clausola può essere visualizzata dopo una Else clausola . If...Then ...Else le istruzioni possono essere annidate tra loro.

Nella sintassi multilinea l'istruzione If deve essere l'unica istruzione nella prima riga. Le ElseIfistruzioni , Elsee End If possono essere precedute solo da un'etichetta di riga. Il If...Then ...Else il blocco deve terminare con un'istruzione End If .

Suggerimento

Selezione ... L'istruzione Case può risultare più utile quando si valuta una singola espressione con diversi valori possibili.

sintassi Single-Line

È possibile usare la sintassi a riga singola per una singola condizione con codice da eseguire se è true. Tuttavia, la sintassi a più righe offre una maggiore struttura e flessibilità ed è più facile da leggere, gestire ed eseguire il debug.

Di seguito viene esaminata la Then parola chiave per determinare se un'istruzione è una riga Ifsingola. Se dopo la stessa riga viene visualizzato un commento diverso da Then un commento, l'istruzione viene considerata come un'istruzione a riga If singola. Se Then è assente, deve essere l'inizio di una riga Ifmultipla ...Then ...Else.

Nella sintassi a riga singola è possibile eseguire più istruzioni come risultato di una Ifdecisione ...Then . Tutte le istruzioni devono trovarsi nella stessa riga e devono essere separate da due punti.

Esempio di sintassi multilinea

Nell'esempio seguente viene illustrato l'uso della sintassi multilinea di If...Then ...Else affermazione.

'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 annidati If...Then ...Else Dichiarazioni.

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 Single-Line

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