ProgrammationDéveloppeur VB, spécialiste de la logique métier

Comment fonctionne l'opérateur Select Case en Visual Basic, quelles en sont les particularités et les pièges potentiels par rapport à If...ElseIf ? Donnez des exemples de scénarios complexes.

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

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 :

  • Gère plusieurs valeurs, plages, types, etc. en même temps.
  • Chaque section Case peut inclure des plages (Case 1 To 10), des valeurs séparées (Case 2, 4, 6), des expressions complexes (Case Is > 100).
  • La vérification se fait dans l'ordre strict de déclaration des cas ; une fois qu'une correspondance est trouvée, les autres cas ne sont pas vérifiés.

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 :

  • Select Case ne peut normalement pas être utilisé pour vérifier plusieurs variables ou des expressions logiques complexes (par exemple, AND, OR entre différentes conditions).
  • If...ElseIf permet de construire des vérifications plus flexibles avec des opérateurs logiques.

Question piège.

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

Exemples d'erreurs réelles dues à une méconnaissance des subtilités du sujet.


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.