Struktury oraz inne elementy programowania (Visual Basic)
Struktury można używać w połączeniu z tablicami, obiektami i procedurami, a także ze sobą. Interakcje używają tej samej składni, co te elementy, używać pojedynczo.
Uwaga
Nie można zainicjować żadnego z elementów struktury w deklaracji struktury. Wartości można przypisać tylko do elementów zmiennej, które zostały zadeklarowane jako typu struktury.
Struktury i tablice
Struktura może zawierać tablicę jako co najmniej jeden element. Ilustruje to poniższy przykład.
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As String
Public purchaseDate As Date
End Structure
Uzyskujesz dostęp do wartości tablicy w strukturze w taki sam sposób, jak dostęp do właściwości w obiekcie. Ilustruje to poniższy przykład.
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
Można również zadeklarować tablicę struktur. Ilustruje to poniższy przykład.
Dim allSystems(100) As systemInfo
Aby uzyskać dostęp do składników tej architektury danych, należy postępować zgodnie z tymi samymi regułami. Ilustruje to poniższy przykład.
ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"
Struktury i obiekty
Struktura może zawierać obiekt jako co najmniej jeden jego element. Ilustruje to poniższy przykład.
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
Należy użyć określonej klasy obiektu w takiej deklaracji, a nie Object
.
Struktury i procedury
Możesz przekazać strukturę jako argument procedury. Ilustruje to poniższy przykład.
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
Powyższy przykład przekazuje strukturę według odwołania, która umożliwia procedurze modyfikowanie jej elementów w taki sposób, aby zmiany zaczęły obowiązywać w kodzie wywołującym. Jeśli chcesz chronić strukturę przed taką modyfikacją, przekaż ją według wartości.
Możesz również zwrócić strukturę z Function
procedury. Ilustruje to poniższy przykład.
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
Struktury w strukturach
Struktury mogą zawierać inne struktury. Ilustruje to poniższy przykład.
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"
Za pomocą tej techniki można również hermetyzować strukturę zdefiniowaną w jednym module w strukturze zdefiniowanej w innym module.
Struktury mogą zawierać inne struktury do dowolnej głębokości.