Partager via


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 que les unes avec les autres. Les interactions utilisent la même syntaxe que ces éléments individuellement.

Remarque

Vous ne pouvez pas initialiser les éléments de structure dans la déclaration de structure. Vous ne pouvez affecter des valeurs qu’à des éléments d’une variable qui a été déclarée comme d’un type de structure.

Structures et tableaux

Une structure peut contenir un tableau sous la forme d’un ou plusieurs de ses éléments. L’exemple suivant illustre cela.

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 cela.

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 cela.

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 cela.

ReDim allSystems(5).diskDrives(3)  
allSystems(5).CPU = "386SX"  
allSystems(5).diskDrives(2) = "100M SCSI"  

Structures et objets

Une structure peut contenir un objet en tant qu’un ou plusieurs de ses éléments. L’exemple suivant illustre cela.

Protected Structure userInput  
    Public userName As String  
    Public inputForm As System.Windows.Forms.Form  
    Public userFileNumber As Integer  
End Structure  

Vous devez utiliser une classe d’objet spécifique dans une telle déclaration, plutôt que Object.

Structures et procédures

Vous pouvez passer une structure en tant qu’argument de procédure. L’exemple suivant illustre cela.

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 afin que les modifications prennent effet dans le code appelant. Si vous souhaitez protéger une structure contre une telle modification, transmettez-la par valeur.

Vous pouvez également retourner une structure à partir d’une Function procédure. L’exemple suivant illustre cela.

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 au sein de structures

Les structures peuvent contenir d’autres structures. L’exemple suivant illustre cela.

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.

Voir aussi