Strukturer och andra programmeringselement (Visual Basic)
Du kan använda strukturer tillsammans med matriser, objekt och procedurer samt med varandra. Interaktionerna använder samma syntax som dessa element använder individuellt.
Kommentar
Du kan inte initiera något av strukturelementen i strukturdeklarationen. Du kan endast tilldela värden till element i en variabel som har deklarerats vara av en strukturtyp.
Strukturer och matriser
En struktur kan innehålla en matris som ett eller flera av dess element. I följande exempel visas detta.
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As String
Public purchaseDate As Date
End Structure
Du kommer åt värdena för en matris i en struktur på samma sätt som du kommer åt en egenskap på ett objekt. I följande exempel visas detta.
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
Du kan också deklarera en matris med strukturer. I följande exempel visas detta.
Dim allSystems(100) As systemInfo
Du följer samma regler för att komma åt komponenterna i den här dataarkitekturen. I följande exempel visas detta.
ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"
Strukturer och objekt
En struktur kan innehålla ett objekt som ett eller flera av dess element. I följande exempel visas detta.
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
Du bör använda en specifik objektklass i en sådan deklaration i stället Object
för .
Strukturer och procedurer
Du kan skicka en struktur som ett procedurargument. I följande exempel visas detta.
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
Föregående exempel skickar strukturen efter referens, vilket gör att proceduren kan ändra dess element så att ändringarna börjar gälla i den anropande koden. Om du vill skydda en struktur mot en sådan ändring skickar du den efter värde.
Du kan också returnera en struktur från en Function
procedur. I följande exempel visas detta.
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
Strukturer inom strukturer
Strukturer kan innehålla andra strukturer. I följande exempel visas detta.
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"
Du kan också använda den här tekniken för att kapsla in en struktur som definierats i en modul i en struktur som definierats i en annan modul.
Strukturer kan innehålla andra strukturer till ett godtyckligt djup.