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 :

- expression1Toexpression2
- [ Is ] comparisonoperatorexpression
- 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 Iscomparisonoperator 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 Caseexpressionlist, 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 Caseexpressionlist 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

Voir aussi