Freigeben über


Strukturen und andere Programmierelemente (Visual Basic)

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

Hinweis

Sie können keines der Strukturelemente in der Strukturdeklaration initialisieren. Sie können Nur Elementen einer Variablen Werte zuweisen, die als Strukturtyp deklariert wurden.

Strukturen und Arrays

Eine Struktur kann ein Array als ein oder mehrere seiner Elemente enthalten. Im folgenden Beispiel wird dies 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 genauso zu, wie Sie auf eine Eigenschaft für ein Objekt zugreifen. Im folgenden Beispiel wird dies veranschaulicht.

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

Sie können auch ein Array von Strukturen deklarieren. Im folgenden Beispiel wird dies veranschaulicht.

Dim allSystems(100) As systemInfo  

Sie befolgen die gleichen Regeln, um auf die Komponenten dieser Datenarchitektur zuzugreifen. Im folgenden Beispiel wird dies veranschaulicht.

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

Strukturen und Objekte

Eine Struktur kann ein Objekt als ein oder mehrere seiner Elemente enthalten. Im folgenden Beispiel wird dies veranschaulicht.

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

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

Strukturen und Verfahren

Sie können eine Struktur als Prozedurargument übergeben. Im folgenden Beispiel wird dies 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 anhand eines Verweises übergeben, sodass die Prozedur ihre Elemente so ändern kann, dass die Änderungen im aufrufenden Code wirksam werden. Wenn Sie eine Struktur vor einer solchen Änderung schützen möchten, übergeben Sie sie als Wert.

Sie können auch eine Struktur aus einer Function Prozedur zurückgeben. Im folgenden Beispiel wird dies 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. Im folgenden Beispiel wird dies 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 Technik auch verwenden, um eine in einem Modul definierte Struktur innerhalb einer in einem anderen Modul definierten Struktur zu kapseln.

Strukturen können andere Strukturen in beliebiger Tiefe enthalten.

Siehe auch