Enum, instruction (Visual Basic)

Mise à jour : novembre 2007

Déclare une énumération et définit les valeurs de ses membres.

[ <attribute list> ] [ access modifier ]  [ Shadows ] 
Enum enumeration name [ As data type ] 
      member list
End Enum

Éléments

  • attribute list
    Facultatif. Liste des attributs s'appliquant à cette énumération. Vous devez mettre la liste d'attributs entre des signes « inférieur à » et « supérieur à » (« < » et « > »).

  • access modifier
    Facultatif. Spécifie le code pouvant accéder à cette énumération. Il peut s'agir de l'une des valeurs suivantes :

    Vous pouvez spécifier ProtectedFriend pour autoriser l'accès à partir du code dans la classe de l'énumération, une classe dérivée ou le même assembly.

  • Shadows
    Facultatif. Spécifie que cette énumération redéclare et masque un élément de programmation de même nom, ou un ensemble d'éléments surchargés, dans une classe de base. Vous pouvez uniquement spécifier Shadows sur l'énumération elle-même, et non sur l'un de ses membres.

  • enumeration name
    Obligatoire. Nom de l'énumération. Pour plus d'informations sur les noms valides, consultez Noms d'éléments déclarés.

  • data type
    Obligatoire si OptionStrict a la valeur On. Type de données de l'énumération et de tous ses membres.

  • member list
    Obligatoire. Liste des constantes membres qui sont déclarées dans cette instruction. Plusieurs membres apparaissent sur les lignes de code source individuelles.

    Chaque member emploie la syntaxe et les éléments suivants : [<attribute list>] member name [ = initializer ]

    Élément

    Description

    member name

    Obligatoire. Nom de ce membre.

    initializer

    Facultatif. Expression qui est évaluée au moment de la compilation et assignée à ce membre.

  • EndEnum
    Met fin au bloc Enum.

Notes

Si vous avez un jeu de valeurs invariables qui sont liées logiquement les unes aux autres, vous pouvez les définir ensemble dans une énumération. Cela fournit des noms explicites pour l'énumération et ses membres, qui sont plus faciles à mémoriser que leurs valeurs. Vous pouvez ensuite utiliser les membres d'énumération à divers endroits de votre code. La lisibilité de votre programme s'en trouve également améliorée car toutes les valeurs connexes utilisent le même nom d'énumération.

Vous pouvez utiliser Enum uniquement au niveau de l'espace de noms ou du module. Cela signifie que le contexte de déclaration pour une énumération doit être un fichier source, un espace de noms, une classe, une structure, un module ou une interface, et ne peut pas être une procédure. Pour plus d'informations, consultez Contextes de déclaration et niveaux d'accès par défaut.

L'instruction Enum peut déclarer le type de données d'une énumération. Chaque membre prend le type de données de l'énumération. Vous pouvez spécifier Byte, Integer, Long, SByte, Short, UInteger, ULong ou UShort.

Si vous ne spécifiez pas initializer pour un membre, Visual Basic l'initialise soit à zéro (si c'est le premier member dans member list), soit à une valeur supérieure d'une unité à la valeur du member qui précède immédiatement.

Les énumérations de membres d'une classe, d'une structure, d'un module et d'une interface disposent par défaut d'un accès public. Vous pouvez régler leurs niveaux d'accès avec les modificateurs d'accès. Les énumérations de membres d'un espace de noms disposent par défaut d'un accès ami. Vous pouvez régler un niveau d'accès public, mais pas privé ni protégé. Pour plus d'informations, consultez Niveaux d'accès dans Visual Basic.

  • Contexte de déclaration. Une énumération déclarée au niveau du module, à l'extérieur de toute procédure, est une énumération membre ; elle est membre de la classe, de la structure, du module ou de l'interface qui la déclare.

    Une énumération déclarée au niveau de l'espace de noms, à l'extérieur de toute classe, toute structure, tout module ou toute interface, est uniquement membre de l'espace de noms dans lequel elle apparaît.

  • Attributs. Vous pouvez appliquer des attributs à l'ensemble d'une énumération, mais pas à ses membres individuellement. Un attribut fournit des informations aux métadonnées de l'assembly.

  • Modificateurs. Par défaut, toutes les énumérations sont des types et leurs champs sont des constantes. Par conséquent, les mots clés Shared, Static et ReadOnly ne peuvent pas être utilisés lors de la déclaration d'une énumération ou de ses membres.

Règles relatives aux types de données

  • Type par défaut. Si vous ne spécifiez pas data type pour l'énumération, chaque membre prend le type de données de son initializer. Si vous spécifiez data type et initializer, le type de données de initializer doit pouvoir être converti en data type. Si ni l'élément data type ni l'élément initializer n'est présent, le type de données a la valeur Integer par défaut.

  • Initialisation. L'instruction Enum peut initialiser le contenu de membres sélectionnés dans member list. Vous utilisez initializer pour fournir une expression à assigner au membre.

    L'expression fournie dans chaque initializer peut être n'importe quelle combinaison de littéraux, d'autres constantes déjà définies et de membres d'énumération déjà définis, y compris un membre précédent de cette énumération. Vous pouvez utiliser des opérateurs arithmétiques et logiques pour combiner ces éléments.

    Vous ne pouvez pas utiliser de variables ni de fonctions dans initializer. Toutefois, vous pouvez utiliser des mots clés de conversions, tels que CByte et CShort. Vous pouvez également utiliser AscW si vous l'appelez avec une constante String ou un argument Char, car l'évaluation peut se produire au moment de la compilation.

Comportement

  • Niveau d'accès. Tous les membres d'énumération ont un accès public, et vous ne pouvez pas utiliser de modificateurs d'accès sur ceux-ci. Toutefois, si l'énumération proprement dite possède a un niveau d'accès plus restreint, le niveau d'accès spécifié de l'énumération prend la priorité.

  • Portée. Les énumérations de membres sont accessibles à partir de n'importe quel endroit dans leur classe, structure, module ou interface. Les énumérations de membres d'un espace de noms sont accessibles à partir de n'importe quel code dans cet espace de noms.

  • Qualification. Le code à l'extérieur d'une classe, d'une structure ou d'un module doit qualifier le nom d'une énumération de membre avec le nom de cette classe, de cette structure ou de ce module.

  • Valeurs non valides. Si la valeur d'un membre dépasse la plage autorisée pour le type de données sous-jacent ou si vous initialisez un membre à la valeur maximale autorisée par le type de données sous-jacent, le compilateur signale une erreur.

Les variables d'énumération sont des variables déclarées comme étant de type Enum. Déclarer une variable de cette manière vous aide à contrôler les valeurs que vous lui assignez. Toutefois, vous pouvez toujours assigner une valeur qui n'est pas un membre d'énumération, à condition que son type de données puisse être converti en type de données de l'énumération. Cela est utile lorsque l'énumération est un champ Indicateur et que vous assignez une combinaison d'indicateurs à la variable d'énumération. L'exemple suivant montre une assignation de plusieurs indicateurs à une variable d'énumération.

Enum filePermissions
    create = 1
    read = 2
    write = 4
    delete = 8
End Enum
Dim file1Perm As filePermissions
file1Perm = filePermissions.create Or filePermissions.read

Vous devez qualifier chaque référence à un membre d'énumération, soit avec le nom d'une variable d'énumération, soit avec le nom de l'énumération. Dans le cadre de l'exemple précédent, vous pouvez faire référence au premier membre en tant que filePermissions.create, pas comme create.

Exemple

L'exemple suivant utilise l'instruction Enum pour définir un jeu connexe de valeurs de constantes nommées. Dans ce cas, les valeurs sont des couleurs que vous pouvez choisir pour désigner des formulaires d'entrée de données pour une base de données.

Public Enum InterfaceColors
    MistyRose = &HE1E4FF&
    SlateGray = &H908070&
    DodgerBlue = &HFF901E&
    DeepSkyBlue = &HFFBF00&
    SpringGreen = &H7FFF00&
    ForestGreen = &H228B22&
    Goldenrod = &H20A5DA&
    Firebrick = &H2222B2&
End Enum

L'exemple suivant montre des valeurs qui incluent des nombres positifs et négatifs.

Enum SecurityLevel
    IllegalEntry = -1
    MinimumSecurity = 0
    MaximumSecurity = 1
End Enum

Voir aussi

Concepts

Conversions implicites et explicites

Constantes et énumérations intrinsèques

Référence

Const, instruction (Visual Basic)

Dim, instruction (Visual Basic)

Fonctions de conversion de types de données

Fonctions Asc, AscW

Autres ressources

Constantes et énumérations en Visual Basic