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 Object
van .
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.