Udostępnij za pomocą


Struktury i inne elementy programowania (Visual Basic)

Struktury można używać w połączeniu z tablicami, obiektami i procedurami, a także z innymi strukturami. Interakcje używają tej samej składni, jaką te elementy używają osobno.

Uwaga / Notatka

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. Poniższy przykład ilustruje to.

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. Poniższy przykład ilustruje to.

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

Można również zadeklarować tablicę struktur. Poniższy przykład ilustruje to.

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. Poniższy przykład ilustruje to.

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. Poniższy przykład ilustruje to.

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. Poniższy przykład ilustruje to.

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ą jako wartość.

Możesz też zwrócić strukturę z procedury Function. Poniższy przykład ilustruje to.

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. Poniższy przykład ilustruje to.

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.

Zobacz także