Megosztás a következőn keresztül:


Struktúrák és egyéb programozási elemek (Visual Basic)

A struktúrák tömbökkel, objektumokkal és eljárásokkal, valamint egymással együtt használhatók. Az interakciók ugyanazt a szintaxist használják, mint az egyes elemek.

Megjegyzés:

A struktúradeklaráció egyik szerkezeti elemét sem inicializálhatja. Csak olyan változó elemeihez rendelhet értékeket, amelyek deklarálva vannak egy struktúratípussal.

Struktúrák és tömbök

A struktúra egy tömböt tartalmazhat egy vagy több elemként. Az alábbi példa ezt szemlélteti.

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

A tömb értékeit ugyanúgy érheti el egy struktúrában, mint egy objektumon lévő tulajdonságot. Az alábbi példa ezt szemlélteti.

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

Struktúrák tömbjét is lehet deklarálni. Az alábbi példa ezt szemlélteti.

Dim allSystems(100) As systemInfo  

Ugyanazokat a szabályokat követve érheti el az adatarchitektúra összetevőit. Az alábbi példa ezt szemlélteti.

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

Struktúrák és objektumok

A struktúra egy objektumot tartalmazhat egy vagy több elemként. Az alábbi példa ezt szemlélteti.

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

Egy ilyen deklarációban egy adott objektumosztályt kell használnia, nem pedig Object.

Struktúrák és eljárások

A struktúrát eljárásargumentumként is átadhatja. Az alábbi példa ezt szemlélteti.

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  

Az előző példa hivatkozással továbbítja a struktúrát, amely lehetővé teszi, hogy az eljárás módosítsa annak elemeit, hogy a módosítások érvénybe lépjenek a hívó kódban. Ha meg szeretne védeni egy struktúrát az ilyen módosításoktól, adja át érték szerint.

Function eljárásból egy struktúrát is visszaadhat. Az alábbi példa ezt szemlélteti.

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  

Struktúrák a struktúrákon belül

A struktúrák más struktúrákat is tartalmazhatnak. Az alábbi példa ezt szemlélteti.

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"  

Ezzel a technikával egy modulban definiált struktúrát is beágyazhat egy másik modulban definiált struktúrába.

A struktúrák tetszőleges mélységben tartalmazhatnak más struktúrákat.

Lásd még