Select...Case, instruction (Visual Basic)
Exécute l’un des multiples groupes d’instructions, en fonction de la valeur d’une expression.
Syntaxe
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Éléments
Terme | Définition |
---|---|
testexpression |
Obligatoire. Expression. Doit évaluer l’un des types de données élémentaires (Boolean , Byte , Char , Date , Double , Decimal , Integer , Long , Object , SByte , Short , Single , String , UInteger , ULong et UShort ). |
expressionlist |
Obligatoire dans une instructionCase . Liste de clauses d’expression représentant les valeurs de correspondance pour testexpression . Plusieurs clauses d’expression sont séparées par des virgules. Chaque clause peut prendre l’une des formes suivantes :- expression1 To expression2- [ Is ] opérateur_comparaison expression- expression Utilisez le mot clé To pour spécifier les limites d’une plage de valeurs de correspondance pour testexpression . La valeur de expression1 doit être inférieure ou égale à la valeur de expression2 .Utilisez le mot clé Is avec un opérateur de comparaison (= , <> , < , <= , > ou >= ) pour spécifier une restriction sur les valeurs de correspondance pour testexpression . Si le mot clé Is n’est pas fourni, il est automatiquement inséré avant comparisonoperator.Le formulaire spécifiant uniquement expression est traité comme un cas spécial du formulaire Is où comparisonoperator est le signe égal (= ). Ce formulaire est évalué comme testexpression = expression .Les expressions dans expressionlist peuvent être de n’importe quel type de données, à condition qu’elles soient implicitement convertibles en type de testexpression et que la comparisonoperator appropriée soit valide pour les deux types avec lesquels il est utilisé. |
statements |
Optionnel. Une ou plusieurs instructions qui suivent Case et s’exécutent si testexpression correspond à une clause dans expressionlist . |
elsestatements |
Optionnel. Une ou plusieurs instructions qui suivent Case Else et s’exécutent si testexpression ne correspond à aucune clause dans la expressionlist de l’une des instructions Case . |
End Select |
Met fin à la définition de la construction Select ...Case . |
Notes
Si testexpression
correspond à une clause Case
expressionlist
, les instructions qui suivent cette instruction Case
s’exécutent jusqu’à l’instruction Case
, Case Else
ou End Select
suivante. Le contrôle passe ensuite à l’instruction qui suit End Select
. Si testexpression
correspond à une clause expressionlist
dans plusieurs clauses Case
, seules les instructions qui suivent la première correspondance s’exécutent.
L’instruction Case Else
est utilisée pour introduire les elsestatements
à exécuter si aucune correspondance n’est trouvée entre la testexpression
et une clause expressionlist
dans l’une des autres instructions Case
. Bien que ce ne soit pas obligatoire, il est judicieux d’avoir une instruction Case Else
dans votre construction Select Case
pour gérer les valeurs testexpression
imprévues. Si aucune clause Case
expressionlist
ne correspond à testexpression
et qu’il n’y a pas d’instruction Case Else
, le contrôle passe à l’instruction qui suit End Select
.
Vous pouvez utiliser plusieurs expressions ou plages dans chaque clause Case
. Par exemple, la ligne suivante est valide.
Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber
Notes
Le mot clé Is
utilisé dans les instructions Case
et Case Else
n’est pas identique à l’opérateur Is, qui est utilisé pour la comparaison des références d’objets.
Vous pouvez spécifier des plages et plusieurs expressions pour les chaînes de caractères. Dans l’exemple suivant, Case
correspond à toute chaîne qui est exactement égale à « pommes », a une valeur comprise entre « noix » et «soupe » dans l’ordre alphabétique, ou contient exactement la même valeur que la valeur actuelle de testItem
.
Case "apples", "nuts" To "soup", testItem
Le paramètre de Option Compare
peut affecter les comparaisons de chaînes. Sous Option Compare Text
, les chaînes « Pommes » et « pommes » se considérées comme égales dans la comparaison, mais sous Option Compare Binary
, ce n’est pas le cas.
Notes
Une instruction Case
avec plusieurs clauses peut présenter un comportement connu comme de court-circuitage. Visual Basic évalue les clauses de gauche à droite, et si l’on produit une correspondance avec testexpression
, les clauses restantes ne sont pas évaluées. Le court-circuitage peut améliorer les performances, mais il peut produire des résultats inattendus si vous vous attendez à ce que chaque expression dans expressionlist
soit évaluée. Pour plus d’informations sur le court-circuitage, consultez Expressions booléennes.
Si le code d’un bloc d’instructions Case
ou Case Else
n’a pas besoin d’exécuter plus d’instructions dans le bloc, il peut quitter le bloc à l’aide de l’instruction Exit Select
. Cela transfère immédiatement le contrôle à l’instruction qui suit End Select
.
Les constructions Select Case
peuvent être imbriquées. Chaque construction Select Case
imbriquée doit avoir une instruction End Select
correspondante et doit être entièrement contenue dans un seul bloc d’instructions Case
ou Case Else
de la construction Select Case
externe dans laquelle elle est imbriquée.
Exemple
L’exemple suivant utilise une construction Select Case
pour écrire une ligne correspondant à la valeur de la variable number
. La deuxième instruction Case
contient la valeur qui correspond à la valeur actuelle de number
, de sorte que l’instruction qui écrit « Entre 6 et 8, inclus » s’exécute.
Dim number As Integer = 8
Select Case number
Case 1 To 5
Debug.WriteLine("Between 1 and 5, inclusive")
' The following is the only Case clause that evaluates to True.
Case 6, 7, 8
Debug.WriteLine("Between 6 and 8, inclusive")
Case 9 To 10
Debug.WriteLine("Equal to 9 or 10")
Case Else
Debug.WriteLine("Not between 1 and 10, inclusive")
End Select