Dela via


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 Objectfö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.

Se även