Sommario
L’istruzione SELECT CASE viene utilizzata per selezionare quale blocco di istruzioni eseguire in base al valore di una certa espressione.
Sintassi #
Select Case <espressione>
Case <valore/espressione>[, <valore/espressione>, <valore/espressione>]
<blocco di istruzioni>
Case <valore/espressione>[, <valore/espressione>, <valore/espressione>]
<blocco di istruzioni>
Case <valore/espressione>[, <valore/espressione>, <valore/espressione>]
<blocco di istruzioni>
[Case Else]
[<blocco di istruzioni CASE ELSE>]
EndSelect
- <espressione> è una qualsiasi espressione numerica
- I vari <valore/espressione> presenti nei Case sono espressioni o valori numerici da confrontare con il valore di <espressione>. Ogni Case può avere diversi <valore/espressione> separati da virgola.
- Il blocco Case Else è facoltativo e viene eseguito solo se non è trovata alcuna corrispondenza tra il valore di <espressione> e i vari Case
Funzionamento:
1) Viene calcolato il valore di <espressione>
2) Il valore di <espressione> viene confrontato con i valori dei vari Case
3) Se c’è una corrispondenza con uno dei valori dei Case, viene eseguito il blocco di codice associato
4) Se NON c’è alcuna corrispondenza viene eseguito (se presente) il blocco di codice associato a Case Else
Esempi:
'Calcoliamo il nome del mese in base al numero del mese.
'In questo esempio non è presente il CASE ELSE.
Dim month As Numeric = 5
Select Case month
Case 1
monthName = "January"
Case 2
monthName = "February"
Case 3
monthName = "March"
Case 4
monthName = "April"
Case 5
monthName = "May"
Case 6
monthName = "June"
Case 7
monthName = "July"
Case 8
monthName = "August"
Case 9
monthName = "September"
Case 10
monthName = "October"
Case 11
monthName = "November"
Case 12
monthName = "December"
EndSelect
'Il risultato è: May
'Calcoliamo il numero di giorni di un mese, in base al numero del mese
Dim month As Numeric = 5
Dim daysInMonth As Numeric = 0
Select Case month
Case 2
'controllo se l'anno è bisestile
If (Math.Mod(Year, 400) = 0) Or ((Math.Mod(Year, 4) = 0) And (Math.Mod(Year, 100) <> 0)) Then
daysInMonth = 29
Else
daysInMonth = 28
EndIf
Case 4, 6, 9, 11
daysInMonth = 30
Case Else
daysInMonth = 31
EndSelect
'Il risultato è: 31