Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare strutture in combinazione con matrici, oggetti e routine, nonché tra loro. Le interazioni usano la stessa sintassi utilizzata singolarmente da questi elementi.
Annotazioni
Non è possibile inizializzare alcun elemento della struttura nella dichiarazione della struttura. È possibile assegnare valori solo agli elementi di una variabile dichiarata come di un tipo di struttura.
Strutture e matrici
Una struttura può contenere una matrice come uno o più dei relativi elementi. Nell'esempio seguente viene illustrato questo.
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As String
Public purchaseDate As Date
End Structure
È possibile accedere ai valori di una matrice all'interno di una struttura allo stesso modo in cui si accede a una proprietà in un oggetto . Nell'esempio seguente viene illustrato questo.
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
È anche possibile dichiarare una matrice di strutture. Nell'esempio seguente viene illustrato questo.
Dim allSystems(100) As systemInfo
Seguire le stesse regole per accedere ai componenti di questa architettura dei dati. Nell'esempio seguente viene illustrato questo.
ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"
Strutture e oggetti
Una struttura può contenere un oggetto come uno o più dei relativi elementi. Nell'esempio seguente viene illustrato questo.
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
È consigliabile usare una classe oggetto specifica in una dichiarazione di questo tipo, anziché Object
.
Strutture e procedure
È possibile passare una struttura come argomento di procedura. Nell'esempio seguente viene illustrato questo.
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
Nell'esempio precedente viene passata la struttura per riferimento, che consente alla routine di modificare i relativi elementi in modo che le modifiche vengano applicate nel codice chiamante. Se si desidera proteggere una struttura da tali modifiche, passarla per valore.
È anche possibile restituire una struttura da una Function
routine. Nell'esempio seguente viene illustrato questo.
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
Strutture all'interno di strutture
Le strutture possono contenere altre strutture. Nell'esempio seguente viene illustrato questo.
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"
È anche possibile usare questa tecnica per incapsulare una struttura definita in un modulo all'interno di una struttura definita in un modulo diverso.
Le strutture possono contenere altre strutture a una profondità arbitraria.