Der Select Case Operator wird verwendet, um den Wert eines Ausdrucks auf Übereinstimmungen mit einem oder mehreren Fällen zu überprüfen. Dies ist eine Alternative zu mehreren verschachtelten If...ElseIf, was den Code sauberer und einfacher zu lesen macht.
Besonderheiten:
Case Abschnitt kann Bereiche (Case 1 To 10), einzelne Werte (Case 2, 4, 6), komplexe Ausdrücke (Case Is > 100) enthalten.Komplexe Fälle:
Dim status As Integer = 7 Select Case status Case 1 To 5 Console.WriteLine("Von 1 bis 5") Case 6, 7, 8 Console.WriteLine("Von 6 bis 8") Case Is > 10 Console.WriteLine("Mehr als 10") Case Else Console.WriteLine("Anderer Wert") End Select
Unterschiede zu If...ElseIf:
If...ElseIf ermöglicht flexiblere Prüfungen mit logischen Operatoren.Frage: „Wie verhält sich Select Case bei der Überprüfung eines String-Wertes, wenn die Fälle sich in der Groß-/Kleinschreibung unterscheiden?“
Richtige Antwort: Der Vergleich im Select Case erfolgt unter Berücksichtigung des Parameters Option Compare. Standardmäßig ist der Vergleich in Visual Basic nicht empfindlich gegenüber der Großschreibung (Option Compare Text), kann jedoch geändert werden (Option Compare Binary). Wenn Option Compare Binary aktiviert ist, werden "test" und "Test" als unterschiedlich betrachtet.
Beispiel:
' Am Anfang der Datei: ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("Funktioniert es? Nein") Case "Test" Console.WriteLine("Funktioniert es? Ja") End Select
Geschichte
Im Projekt zur Bestandsaufnahme wurden numerische Identifikatoren als Strings im Select Case verglichen. Bei der Neukodierung der Daten stimmten einige Fälle nicht überein, aufgrund verschiedener Kodierungen und Unterschiede in der Großschreibung, was zu falscher Kategorisierung führte.
Geschichte
Bei der Entwicklung von Online-Foren wurde der Bereich Case 1 To 10 zur Überprüfung des Benutzer-Rangs verwendet, jedoch wurde ein Fehler beim Grenzwert (Boundary Value) gemacht — bei status=10 wurde der Abschnitt nicht aktiviert, was auf Unachtsamkeit beim Design zurückzuführen war.
Geschichte
In einer Bankanwendung wurde versucht, zwei Variablen innerhalb eines Case zu prüfen (Case a > 5 And b < 3). Der Code kompiliert nicht und der Wechsel zu If...ElseIf half, Logikfehler in der Routing-Logik zu erkennen.