Structures et autres éléments de programmation (Visual Basic)
Vous pouvez utiliser des structures conjointement avec des tableaux, des objets et des procédures, ainsi qu’entre eux. Les interactions utilisent la même syntaxe que ces éléments utilisent individuellement.
Notes
Vous ne pouvez initialiser aucun des éléments de structure dans la déclaration de structure. Vous pouvez affecter des valeurs uniquement aux éléments d’une variable qui a été déclarée comme étant d’un type de 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
Vous accédez aux valeurs d’un tableau au sein d’une structure de la même façon que vous accédez à une propriété sur 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
Vous 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 tableau 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
Il convient d'utiliser une classe d'objets spécifique dans une telle déclaration, au lieu de Object
.
Structures et procédures
Vous pouvez passer une structure en tant qu’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
L'exemple précédent transmet la structure par référence, ce qui permet à la procédure de modifier ses éléments de manière à ce que les changements prennent effet dans le code appelant. Si vous souhaitez protéger une structure contre de telles modifications, passez-la par une valeur.
Vous pouvez également renvoyer une structure à partir d'une Function
procédure. 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 les 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 dans une structure définie dans un autre module.
Les structures peuvent contenir d'autres structures à une profondeur arbitraire.