L'operatore Select Case è utilizzato per controllare il valore di un'espressione in relazione a uno o più casi. È un'alternativa a più istruzioni If...ElseIf, rendendo il codice più pulito e più facile da leggere.
Peculiarità:
Case può comprendere intervalli (Case 1 To 10), valori singoli (Case 2, 4, 6), espressioni complesse (Case Is > 100).Casi complessi:
Dim status As Integer = 7 Select Case status Case 1 To 5 Console.WriteLine("Da 1 a 5") Case 6, 7, 8 Console.WriteLine("Da 6 a 8") Case Is > 10 Console.WriteLine("Maggiore di 10") Case Else Console.WriteLine("Altro valore") End Select
Differenze da If...ElseIf:
If...ElseIf consente di costruire controlli più flessibili con operatori logici.Domanda: “Come si comporterà Select Case quando si controlla un valore stringa, se i case differiscono per il caso dei caratteri?”
Risposta corretta: Il confronto in Select Case avviene tenendo conto del parametro Option Compare. Per impostazione predefinita, il confronto in Visual Basic non è sensibile al caso (Option Compare Text), ma può essere modificato (Option Compare Binary). Se è attivato Option Compare Binary, "test" e "Test" verranno considerati diversi.
Esempio:
' All'inizio del file: ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("Funzionerà? No") Case "Test" Console.WriteLine("Funzionerà? Sì") End Select
Storia
Nel progetto di inventario, sono stati confrontati identificatori numerici come stringhe in Select Case. Durante la ricodifica dei dati, alcuni case non corrispondevano a causa di una codifica diversa e della differenza di case, portando a una categorizzazione errata.
Storia
Nello sviluppo di forum online, è stato utilizzato un intervallo Case 1 To 10 per controllare il rango di un utente, ma c'è stato un errore nel Boundary Value (valore limite) — con status=10 la sezione non si attivava a causa di scarsa attenzione durante la progettazione.
Storia
In un'applicazione bancaria, si è cercato di controllare due variabili all'interno di un solo Case (Case a > 5 And b < 3). Il codice si compilava con errore, mentre il passaggio a If...ElseIf ha aiutato a identificare errori nella logica di instradamento delle operazioni.