L'opérateur Select Case est utilisé pour vérifier la valeur d'une expression par rapport à un ou plusieurs cas. C'est une alternative à plusieurs If...ElseIf imbriqués, ce qui rend le code plus propre et plus facile à lire.
Particularités :
Case peut inclure des plages (Case 1 To 10), des valeurs séparées (Case 2, 4, 6), des expressions complexes (Case Is > 100).Cas complexes :
Dim status As Integer = 7 Select Case status Case 1 To 5 Console.WriteLine("De 1 à 5") Case 6, 7, 8 Console.WriteLine("De 6 à 8") Case Is > 10 Console.WriteLine("Plus de 10") Case Else Console.WriteLine("Autre valeur") End Select
Différences par rapport à If...ElseIf :
If...ElseIf permet de construire des vérifications plus flexibles avec des opérateurs logiques.Question : "Comment se comportera Select Case lors de la vérification d'une valeur de chaîne si les cas diffèrent par la casse des caractères ?"
Réponse correcte : La comparaison dans Select Case se fait en tenant compte du paramètre Option Compare. Par défaut, la comparaison dans Visual Basic n'est pas sensible à la casse (Option Compare Text), mais peut être modifiée (Option Compare Binary). Si Option Compare Binary est activé, "test" et "Test" seront considérés comme différents.
Exemple :
' Au début du fichier : ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("Cela fonctionnera ? Non") Case "Test" Console.WriteLine("Cela fonctionnera ? Oui") End Select
Histoire
Dans un projet de gestion d'inventaire, des identifiants numériques étaient comparés comme des chaînes dans Select Case. Lors de la re-codification des données, certains cas ne correspondaient plus en raison d'un encodage différent et d'une différence de casse, entraînant une catégorisation incorrecte.
Histoire
Dans le développement de forums en ligne, une plage Case 1 To 10 était utilisée pour vérifier le rang de l'utilisateur, mais une erreur dans la valeur limite a conduit à ce que la section ne se déclenche pas lorsque status=10 en raison d'un manque d'attention lors de la conception.
Histoire
Dans une application bancaire, on a essayé de vérifier deux variables à l'intérieur d'un seul Case (Case a > 5 And b < 3). Le code a été compilé avec une erreur, tandis que le passage à If...ElseIf a permis de révéler des erreurs dans la logique de routage des opérations.