De Select Case-operator wordt gebruikt om de waarde van een expressie te controleren op overeenkomsten met een of meerdere gevallen. Dit is een alternatief voor meerdere geneste If...ElseIf, waardoor de code netter en gemakkelijker te lezen is.
Kenmerken:
Case-sectie kan bereiken bevatten (Case 1 Tot 10), afzonderlijke waarden (Case 2, 4, 6), complexe expressies (Case Is > 100).Complexe gevallen:
Dim status As Integer = 7 Select Case status Case 1 Tot 5 Console.WriteLine("Van 1 tot 5") Case 6, 7, 8 Console.WriteLine("Van 6 tot 8") Case Is > 10 Console.WriteLine("Meer dan 10") Case Else Console.WriteLine("Andere waarde") End Select
Verschillen met If...ElseIf:
If...ElseIf biedt de mogelijkheid om flexibeler te controleren met logische operatoren.Vraag: “Hoe gedraagt Select Case zich bij het controleren van een stringwaarde, als de gevallen verschillen in hoofdlettergebruik?”
Juiste antwoord: De vergelijking in Select Case gebeurt met inachtneming van de optieparameter Option Compare. Standaard is de vergelijking in Visual Basic niet hoofdlettergevoelig (Option Compare Text), maar kan deze worden gewijzigd (Option Compare Binary). Als Option Compare Binary is ingeschakeld, worden "test" en "Test" als verschillend beschouwd.
Voorbeeld:
' Aan het begin van het bestand: ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("Zal het werken? Nee") Case "Test" Console.WriteLine("Zal het werken? Ja") End Select
Verhaal
In een project voor voorraadbeheer werden numerieke identificaties als strings vergeleken in Select Case. Bij het opnieuw coderen van gegevens kwamen sommige gevallen niet overeen vanwege een andere codering en verschil in hoofdlettergebruik, wat leidde tot onjuiste categorisatie.
Verhaal
Bij de ontwikkeling van online forums werd het bereik Case 1 Tot 10 gebruikt om de gebruikersrang te controleren, maar er was een fout gemaakt bij de Boundary Value (grenswaarde) — bij status=10 werd de sectie niet geactiveerd door onoplettendheid bij het ontwerp.
Verhaal
In een bankapplicatie probeerden ze meteen twee variabelen in één Case te controleren (Case a > 5 And b < 3). De code compileerde met een fout, en overschakelen naar If...ElseIf hielp fouten in de logica van de routering van bewerkingen aan het licht te brengen.