Strukturen und andere Programmierelemente (Visual Basic)

Sie können Strukturen in Verbindung mit Arrays, Objekten und Prozeduren sowie mit anderen Strukturen verwenden. Die Interaktionen verwenden dieselbe Syntax, wie diese Elemente sie einzeln verwenden.

Hinweis

Sie können keins der Strukturelemente in der Strukturdeklaration initialisieren. Sie können nu Elementen einer Variablen Werte zuweisen, die als Strukturtyp deklariert wurde.

Strukturen und Arrays

Eine Struktur kann ein Array als eins oder mehrere ihrer Elemente enthalten. Dies wird anhand des folgenden Beispiels veranschaulicht.

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

Sie greifen auf die Werte eines Arrays innerhalb einer Struktur auf dieselbe Weise zu, wie Sie auf eine Eigenschaft eines Objekts zugreifen. Dies wird anhand des folgenden Beispiels veranschaulicht.

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

Sie können auch ein Array von Strukturen deklarieren. Dies wird anhand des folgenden Beispiels veranschaulicht.

Dim allSystems(100) As systemInfo  

Sie befolgen dieselben Regeln, um auf die Komponenten dieser Datenarchitektur zuzugreifen. Dies wird anhand des folgenden Beispiels veranschaulicht.

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

Strukturen und Objekte

Eine Struktur kann ein Array als eins oder mehrere ihrer Elemente enthalten. Dies wird anhand des folgenden Beispiels veranschaulicht.

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

Sie sollten eine bestimmte Objektklasse in einer solchen Deklaration verwenden, anstatt Object.

Strukturen und Prozeduren

Sie können eine Struktur als Prozedurargument übergeben. Dies wird anhand des folgenden Beispiels veranschaulicht.

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  

Im vorherigen Beispiel wird die Struktur durch Verweis übergeben, was es der Prozedur erlaubt, ihre Elemente so zu ändern, dass die Änderungen im aufrufenden Code wirksam werden. Wenn Sie eine Struktur vor solchen Änderungen schützen möchten, übergeben Sie sie „als Wert“.

Sie können aus einer Function-Prozedur auch eine Struktur zurückgeben. Dies wird anhand des folgenden Beispiels veranschaulicht.

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  

Strukturen innerhalb von Strukturen

Strukturen können andere Strukturen enthalten. Dies wird anhand des folgenden Beispiels veranschaulicht.

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"  

Sie können diese Methode auch verwenden, um eine in einem Modul definierte Struktur in einer Struktur zu kapseln, die in einem anderen Modul definiert ist.

Strukturen können andere Strukturen bis zu einer beliebigen Tiefe enthalten.

Siehe auch