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)
Dim, instruction (Visual Basic)
Const, instruction (Visual Basic)
Enum, instruction (Visual Basic)