If Then Else EndIf
L'istruzione condizionale in Visual Basic .NET è simile agli script sviluppati in Basic e VB 6.
La sintassi
If condizione Then
blocco 1
Else
blocco 2
EndIf
Se la condizione è soddisfatta, la If esegue il blocco 1 di istruzioni. Se non è soddisfatta, esegue il blocco 2.
Un blocco può contenere una o più istruzioni e anche altre if annidate.
Un esempio pratico
Questa If verifica se il voto è maggiore o minore di 18.
Se è maggiore di 18 visualizza la scritta "promosso", viceversa "bocciato"
If (voto >= 18) Then
MsgBox("promosso")
Else
MsgBox("bocciato")
End If
La clausola ElseIf
La If può contenere soltanto una clausola Else.
Per aggiungere altre condizioni secondarie si utilizza la clausola ElseIf.
La sintassi
If condizione Then
blocco 1
Elseif condizione Then
blocco3
Elseif condizione Then
blocco4
Else
blocco 2
EndIf
Si possono inserire più ElseIf.
Un esempio pratico
Nel seguente codice lo script verifica se il voto è compreso nelle classi 18-24, 25-27 o 28-30.
A seconda dei casi visualizza un messaggio diverso sullo schermo.
If (voto >= 18 And voto <= 24) Then
MsgBox("Promosso, la prossima volta cerca di fare meglio")
ElseIf (voto >= 25 And voto <= 27) Then
MsgBox("Promosso, hai preso un bel voto")
ElseIf (voto >= 28) Then
MsgBox("Promosso, ottimo voto!!!")
Else
MsgBox("bocciato")
End If
Se la variabile voto ha un valore compreso tra 18 e 24, lo script visualizza in output il messaggio "Promosso, la prossima volta cerca di fare meglio".
Se, invece, la variabile ha un valore tra 25 e 27, visualizza il messaggio "Promosso, hai preso un bel voto".
If Then Else in linea
Se i blocchi di codice dell'istruzione If Then Else sono composti da una sola linea, posso scriverla in forma contratta.
if (condizione) Then istruzione
Esempio
Questo è un esempio pratico di if online
if (voto>=18) Then msgBox("Promosso")
If nidificate
Una istruzione If Then Else può contenere al suo interno altre istruzioni If. In questo caso è detta If nidificata.
Esempio
Questa if contiene un'altra if dentro la clausola Then
If (voto>18) Then
if (voto>27) Then
msgBox("Promosso. Ottimo voto.")
Else
msgBox("Promosso.")
End If
Else
msgBox("Promosso")
End If
Le if nidificate funzionano correttamente ma il codice sorgente diventa poco leggibile.
Se possibile, in questi casi è preferibile usare l'istruzione Select Case.
E così via