Overbasic – Select Case

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