Structures et autres éléments de programmation
Mise à jour : novembre 2007
Vous pouvez utiliser des structures avec des tableaux, des objets, des procédures, mais aussi les unes avec les autres. Les interactions utilisent la même syntaxe que ces éléments pris individuellement.
Remarque : |
---|
Vous ne pouvez initialiser aucun des éléments de structure dans la déclaration de structure. Vous pouvez assigner des valeurs uniquement aux éléments d'une variable qui a été déclarée comme un type structure. |
Structures et tableaux
Une structure peut contenir un tableau comme un ou plusieurs de ses éléments. L'exemple suivant illustre ce comportement :
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As String
Public purchaseDate As Date
End Structure
Pour accéder aux valeurs d'un tableau dans une structure, procédez comme pour accéder à une propriété d'un objet. L'exemple suivant illustre ce comportement :
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
Vous pouvez également déclarer un tableau de structures. L'exemple suivant illustre ce comportement :
Dim allSystems(100) As systemInfo
Suivez les mêmes règles pour accéder aux composants de cette architecture de données. L'exemple suivant illustre ce comportement :
ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"
Structures et objets
Une structure peut contenir un objet comme un ou plusieurs de ses éléments. L'exemple suivant illustre ce comportement :
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
Dans une déclaration de ce type, utilisez une classe d'objet spécifique de préférence à Object.
Structures et procédures
Vous pouvez passer une structure comme un argument de procédure. L'exemple suivant illustre ce comportement :
Public currentCPUName As String = "700MHz Pentium compatible"
Public currentMemorySize As Long = 256
Public Sub fillSystem(ByRef someSystem As systemInfo)
someSystem.cPU = currentCPUName
someSystem.memory = currentMemorySize
someSystem.purchaseDate = Now
End Sub
Dans l'exemple précédent, la structure est passée par référence, ce qui permet à la procédure de modifier ses éléments de sorte que les modifications prennent effet dans le code appelant. Pour protéger une structure contre de telles modifications, passez-la par valeur.
Vous pouvez également retourner une structure d'une procédure Function. L'exemple suivant illustre ce comportement :
Dim allSystems(100) As systemInfo
Function findByDate(ByVal searchDate As Date) As systemInfo
Dim i As Integer
For i = 1 To 100
If allSystems(i).purchaseDate = searchDate Then Return allSystems(i)
Next i
' Process error: system with desired purchase date not found.
End Function
Structures dans d'autres structures
Les structures peuvent contenir d'autres structures. L'exemple suivant illustre ce comportement :
Public Structure driveInfo
Public type As String
Public size As Long
End Structure
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As driveInfo
Public purchaseDate As Date
End Structure
Dim allSystems(100) As systemInfo
ReDim allSystems(1).diskDrives(3)
allSystems(1).diskDrives(0).type = "Floppy"
Vous pouvez également utiliser cette technique pour encapsuler une structure définie dans un module à l'intérieur d'une autre structure définie dans un module différent.
Les structures peuvent s'imbriquer dans d'autres structures sans limite de profondeur.
Voir aussi
Tâches
Dépannage des types de données
Comment : déclarer une structure
Concepts
Types de données en Visual Basic
Référence
Autres ressources
Implémentation des types de données
Structures constituées à partir de vos propres types de données