Delen via


Structuren en andere programmeerelementen (Visual Basic)

U kunt structuren gebruiken in combinatie met matrices, objecten en procedures, evenals met elkaar. De interacties gebruiken dezelfde syntaxis als deze elementen afzonderlijk.

Notitie

U kunt geen van de structuurelementen in de structuurdeclaratie initialiseren. U kunt alleen waarden toewijzen aan elementen van een variabele die is gedeclareerd als een structuurtype.

Structuren en matrices

Een structuur kan een matrix bevatten als een of meer elementen. In het volgende voorbeeld ziet u dit.

Public Structure systemInfo  
    Public cPU As String  
    Public memory As Long  
    Public diskDrives() As String  
    Public purchaseDate As Date  
End Structure

U krijgt toegang tot de waarden van een matrix binnen een structuur op dezelfde manier als u toegang hebt tot een eigenschap in een object. In het volgende voorbeeld ziet u dit.

Dim mySystem As systemInfo  
ReDim mySystem.diskDrives(3)  
mySystem.diskDrives(0) = "1.44 MB"  

U kunt ook een matrix met structuren declareren. In het volgende voorbeeld ziet u dit.

Dim allSystems(100) As systemInfo  

U volgt dezelfde regels voor toegang tot de onderdelen van deze gegevensarchitectuur. In het volgende voorbeeld ziet u dit.

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

Structuren en objecten

Een structuur kan een object bevatten als een of meer elementen ervan. In het volgende voorbeeld ziet u dit.

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

U moet een specifieke objectklasse in een dergelijke declaratie gebruiken in plaats Objectvan .

Structuren en procedures

U kunt een structuur doorgeven als een procedureargument. In het volgende voorbeeld ziet u dit.

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  

In het voorgaande voorbeeld wordt de structuur doorgegeven aan de referentie, waardoor de procedure de elementen ervan kan wijzigen, zodat de wijzigingen van kracht worden in de aanroepende code. Als u een structuur wilt beschermen tegen dergelijke wijzigingen, geeft u deze door op waarde.

U kunt ook een structuur retourneren vanuit een Function procedure. In het volgende voorbeeld ziet u dit.

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  

Structuren binnen structuren

Structuren kunnen andere structuren bevatten. In het volgende voorbeeld ziet u dit.

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"  

U kunt deze techniek ook gebruiken om een structuur in te kapselen die in één module is gedefinieerd binnen een structuur die in een andere module is gedefinieerd.

Structuren kunnen andere structuren bevatten tot een willekeurige diepte.

Zie ook