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 que la structure comprend.

Syntaxe

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

Pièces

Terme Définition
attributelist Optionnel. Consultez la liste des attributs.
accessmodifier Optionnel. Il peut s’agir de l’un des éléments suivants :

- Public
- Protégé
- Ami
- Privé
- Ami protégé
- Privé protégé

Consultez les niveaux d’accès en Visual Basic.
Shadows Optionnel. Voir Ombres.
Partial Optionnel. Indique une définition partielle de la structure. Voir Partiel.
name Obligatoire. Nom de cette structure. Voir Noms d’éléments déclarés.
Of Optionnel. Spécifie qu’il s’agit d’une structure générique.
typelist Obligatoire si vous utilisez le mot clé Of . Liste des paramètres de type pour cette structure. Consultez La liste des types.
Implements Optionnel. Indique que cette structure implémente les membres d’une ou plusieurs interfaces. Consultez l’instruction Implements.
interfacenames Obligatoire si vous utilisez l’instruction Implements . Noms des interfaces implémentées par cette structure.
datamemberdeclarations Obligatoire. Zéro ou plusConst, Dimou EnumEvent instructions déclarant des membres de données de la structure.
methodmemberdeclarations Optionnel. Zéro ou plusieurs déclarations de Function, , Operatorou PropertySub de procédures, qui servent de membres de méthode de la structure.
End Structure Obligatoire. Met fin à la Structure définition.

Remarques

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

Les structures prennent en charge la plupart des mêmes fonctionnalités que les classes. Par exemple, les structures peuvent avoir des propriétés et des procédures, elles peuvent implémenter des interfaces, et elles peuvent avoir des constructeurs paramétrables. Toutefois, il existe des différences significatives entre les structures et les classes dans des domaines tels que l’héritage, les déclarations et l’utilisation. En outre, les classes sont des types de référence et des structures sont des types valeur. Pour plus d’informations, consultez Structures et classes.

Vous ne pouvez utiliser Structure qu’au niveau de l’espace de noms ou du module. Cela signifie que le contexte de déclaration d’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.

Structures par défaut pour l’accès Friend . Vous pouvez ajuster leurs niveaux d’accès avec les modificateurs d’accès. Pour plus d’informations, consultez Niveaux d’accès en Visual Basic.

Règles

  • Nidification. 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 le biais de la structure conteneur. Au lieu de cela, vous devez 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 de structure ne peut pas être protégé ou Protected Friend , car rien ne peut hériter d’une structure. Toutefois, la structure elle-même peut être Protected ou Protected Friend.

    Vous pouvez déclarer zéro ou plusieurs variables non partagés ou des événements non partagés et non partagés dans une structure. Vous ne pouvez pas avoir uniquement des constantes, des propriétés et des procédures, même si certaines d’entre elles ne sont pas partagés.

  • Initialisation. Vous ne pouvez pas initialiser la valeur d’un membre de données non partagé d’une structure dans le cadre de sa déclaration. Vous devez initialiser un tel membre de données au moyen d’un constructeur paramétrable sur la structure, ou affecter une valeur au membre après avoir créé une instance de la structure.

  • Héritage. Une structure ne peut hériter d’aucun type autre que ValueTypecelui duquel toutes les structures héritent. En particulier, une structure ne peut pas hériter d’une autre.

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

  • Mise en œuvre. Si la structure utilise l’instruction Implements, vous devez implémenter chaque membre défini par chaque interface que vous spécifiez dans interfacenames.

  • Propriété par défaut. Une structure peut spécifier au maximum une propriété comme propriété par défaut, à l’aide du modificateur par défaut . Pour plus d’informations, consultez Default.

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 la structure ont la valeur par défaut pour l’accès public . Notez que si la structure elle-même a un niveau d’accès plus restreint, cela limite automatiquement l’accès à ses membres, même si vous ajustez leurs niveaux d’accès avec les modificateurs d’accès.

  • Portée. Une structure est dans l’étendue de son espace de noms, de sa classe, de sa structure ou de son module contenant.

    L’étendue de chaque membre de structure est la structure entière.

  • Durée de vie. Une structure n’a pas de durée de vie. Au lieu de cela, 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 lorsqu’elle est créée par une clause New Operator . Elle se termine lorsque la durée de vie de la variable qui la contient se termine.

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

    Les membres de structure ont des durées de vie en fonction de la façon et de l’emplacement où ils sont déclarés. Pour plus d’informations, consultez « Durée de vie » dans l’instruction Class.

  • Qualification. Le code en dehors 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 fait 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 contenante, et ainsi de suite vers l’élément le plus externe contenant. Pour plus d’informations, consultez Références aux éléments déclarés.

  • Consommation de mémoire. Comme pour tous les types de données composites, vous ne pouvez pas calculer en toute sécurité la consommation totale de mémoire d’une structure en ajoutant les allocations de stockage nominales de ses membres. En outre, vous ne pouvez pas supposer en toute sécurité que l’ordre de stockage en mémoire est identique à votre 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 associées pour un employé. Il montre l’utilisation de Public, Friendet Private les membres pour refléter la sensibilité des éléments de données. Il affiche également les membres de procédure, de propriété et d’é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

Pour plus d’informations sur l’utilisation Structurede s, consultez Variable de structure.

Voir aussi