Partager via


Structure, instruction

Déclare le nom d'une structure et introduit la définition des variables, propriétés, événements et procédures contenus dans la structure.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
    [ Implements interfacenames ]
    [ datamemberdeclarations ]
    [ methodmemberdeclarations ]
End Structure

Composants

Terme

Définition

attributelist

Optionnel. Consultez Liste d'attributs.

accessmodifier

Optionnel. Il peut s'agir de l'une des valeurs suivantes :

Consultez Niveaux d'accès dans Visual Basic.

Shadows

Optionnel. Consultez Shadows.

Partial

Optionnel. Indique une définition partielle de la structure. Consultez Partial (Visual Basic).

name

Requis. Nom de cette structure. Consultez Noms d'éléments déclarés (Visual Basic).

Of

Optionnel. Indique qu'il s'agit d'une structure générique.

typelist

Requis si vous utilisez le mot clé Of. Liste de paramètres de type pour cette structure. Consultez Liste de types.

Implements

Optionnel. Indique que cette structure implémente les membres d'une ou plusieurs interfaces. Consultez Implements, instruction.

interfacenames

Requis si vous utilisez l'instruction Implements. Noms des interfaces que cette structure implémente.

datamemberdeclarations

Requis. Zéro ou plus instructions Const, Dim, Enum ou Event qui déclarent des données membres de la structure.

methodmemberdeclarations

Optionnel. Zéro ou plusieurs déclarations des procédures Function, Operator, Property ou Sub utilisées comme membres de méthode de la structure.

End Structure

Requis. Met fin à la définition Structure.

Notes

L'instruction Structure définit un type valeur composite que vous pouvez personnaliser. Une structure est une généralisation du type défini par l'utilisateur (UDT, User-Defined Type) des précédentes versions de Visual Basic. Pour plus d'informations, consultez Structures (Visual Basic).

Les structures prennent en charge un grand nombre de mêmes fonctionnalités comme classes. Par exemple, les structures peuvent avoir des propriétés et des procédures, implémenter des interfaces et posséder des constructeurs paramétrables. Toutefois, des différences importantes existent entre les structures et les classes dans des domaines tels que l'héritage, les déclarations et l'utilisation. De même, les classes sont des types référence et les structures des types valeur. Pour plus d'informations, consultez Structures et classes (Visual Basic).

Vous pouvez utiliser Structure uniquement au niveau de l'espace de noms ou du module. Cela signifie que le contexte de déclaration pour une structure 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 ou un bloc. Pour plus d'informations, consultez Contextes de déclaration et niveaux d'accès par défaut (Visual Basic).

Les structures disposent par défaut d'un accès Friend (Visual Basic). Vous pouvez régler leurs niveaux d'accès avec les modificateurs d'accès. Pour plus d'informations, consultez Niveaux d'accès dans Visual Basic.

Règles

  • Imbrication. Vous pouvez définir une structure dans une autre. La structure externe est appelée structure conteneur, et la structure interne est appelée structure imbriquée. Toutefois, vous ne pouvez pas accéder aux membres d'une structure imbriquée par l'intermédiaire de la structure conteneur. Vous devez plutôt déclarer une variable du type de données de la structure imbriquée.

  • Déclaration de membre. Vous devez déclarer chaque membre d'une structure. Un membre d'une structure ne peut pas être Protected ou Protected Friend, car rien ne peut être hérité d'une structure Toutefois, la structure proprement dite peut être Protected ou Protected Friend.

    Vous pouvez déclarer ou non des variables non partagées ou des événements non partagés et non personnalisés dans une structure. Vous ne pouvez pas posséder uniquement des constantes, propriétés et procédures, même si certaines sont non partagées.

  • Initialisation. Vous ne pouvez pas initialiser la valeur d'une donnée membre non partagée d'une structure comme élément de sa déclaration. Vous devez soit initialiser une donnée membre au moyen d'un constructeur paramétrable sur la structure, soit assigner une valeur au membre après avoir créé une instance de la structure.

  • Héritage. Une structure ne peut pas hériter d'un type autre que ValueType, d'où héritent toutes les structures. En particulier, une structure ne peut pas hériter d'une autre.

    Vous ne pouvez pas utiliser l'Inherits, instruction dans une définition de structure, même pour spécifier ValueType.

  • Implémentation. Si la structure utilise l'Implements, instruction, vous devez implémenter chaque membre défini par chaque interface que vous spécifiez dans interfacenames.

  • Default, propriété. Une structure peut spécifier au plus une propriété comme sa propriété par défaut, à l'aide du modificateur Default (Visual Basic). Pour plus d'informations, consultez Default (Visual Basic).

Comportement

  • Niveau d'accès. Dans une structure, vous pouvez déclarer chaque membre avec son propre niveau d'accès. Tous les membres de structure disposent par défaut d'un accès Public (Visual Basic). Notez que si la structure proprement dite a un niveau d'accès plus restreint, cela restreint automatiquement l'accès à ses membres, même si vous modifiez leurs niveaux d'accès à l'aide des modificateurs d'accès.

  • Portée. Une structure est présente dans la portée dans l'ensemble de son espace de noms, sa classe, sa structure ou son module conteneur.

    La portée d'un membre de structure est la structure entière.

  • Durée de vie. Une structure elle-même n'a pas de durée de vie. En revanche, chaque instance de cette structure a une durée de vie indépendante de toutes les autres instances.

    La durée de vie d'une instance commence à sa création par une clause New, opérateur (Visual Basic) Elle se termine lorsque la durée de vie de la variable qui la contient prend fin.

    Vous ne pouvez pas étendre la durée de vie d'une instance de structure. Une approximation des fonctionnalités de structure statiques est fournie par un module. Pour plus d'informations, consultez Module, instruction.

    Les membres de structure ont des durées de vie qui varient selon leur méthode et leur lieu de déclaration. Pour plus d'informations, consultez « Durée de vie » dans Class, instruction (Visual Basic).

  • Qualification. Le code à l'extérieur d'une structure doit qualifier le nom d'un membre avec le nom de cette structure.

    Si le code à l'intérieur d'une structure imbriquée crée une référence non qualifiée à un élément de programmation, Visual Basic recherche d'abord l'élément dans la structure imbriquée, puis dans sa structure conteneur, et ainsi de suite jusqu'à l'élément conteneur le plus externe. Pour plus d'informations, consultez Références aux éléments déclarés (Visual Basic).

  • Consommation de mémoire. Comme dans le cas de tous les types de données composites, vous ne pouvez pas calculer en toute sécurité la consommation totale de la mémoire d'une structure en additionnant les allocations de stockage nominal de ses membres. De plus, il est risqué de supposer que l'ordre de stockage dans la mémoire est identique à l'ordre de déclaration. Si vous devez contrôler la disposition de stockage d'une structure, vous pouvez appliquer l'attribut StructLayoutAttribute à l'instruction Structure.

Exemple

L'exemple suivant utilise l'instruction Structure pour définir un ensemble de données apparentées pour un employé. Il montre l'utilisation des membres Public, Friend et Private pour refléter la sensibilité des éléments de données. Il montre également les membres d'une procédure, d'une propriété et d'un événement.

Public Structure employee
    ' Public members, accessible from throughout declaration region. 
    Public firstName As String 
    Public middleName As String 
    Public lastName As String 
    ' Friend members, accessible from anywhere within the same assembly. 
    Friend employeeNumber As Integer 
    Friend workPhone As Long 
    ' Private members, accessible only from within the structure itself. 
    Private homePhone As Long 
    Private level As Integer 
    Private salary As Double 
    Private bonus As Double 
    ' Procedure member, which can access structure's private members. 
    Friend Sub calculateBonus(ByVal rate As Single)
        bonus = salary * CDbl(rate)
    End Sub 
    ' Property member to return employee's eligibility. 
    Friend ReadOnly Property eligible() As Boolean 
        Get 
            Return level >= 25
        End Get 
    End Property 
    ' Event member, raised when business phone number has changed. 
    Public Event changedWorkPhone(ByVal newPhone As Long)
End Structure

Voir aussi

Référence

Class, instruction (Visual Basic)

Interface, instruction (Visual Basic)

Module, instruction

Dim, instruction (Visual Basic)

Const, instruction (Visual Basic)

Enum, instruction (Visual Basic)

Event, instruction

Operator, instruction

Property, instruction

Concepts

Structures et classes (Visual Basic)