Strutture e altri elementi di programmazione (Visual Basic)
È possibile utilizzare strutture insieme a matrici, oggetti e routine, nonché con altre strutture. Le interazioni fanno uso della stessa sintassi utilizzata singolarmente da questi elementi.
Nota
Non è possibile inizializzare alcun elemento della struttura nella relativa dichiarazione. È possibile assegnare valori solo agli elementi di una variabile dichiarata come un tipo di struttura.
Strutture e matrici
Una struttura può contenere una matrice come uno o più dei suoi elementi. Questa condizione è illustrata nell'esempio che segue.
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 presente all'interno di una struttura con le stesse modalità con cui si accede alla proprietà di un oggetto. Questa condizione è illustrata nell'esempio che segue.
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
È inoltre possibile dichiarare una matrice di strutture. Questa condizione è illustrata nell'esempio che segue.
Dim allSystems(100) As systemInfo
Per accedere ai componenti di questa architettura di dati si seguono le stesse regole. Questa condizione è illustrata nell'esempio che segue.
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 suoi elementi. Questa condizione è illustrata nell'esempio che segue.
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
In una dichiarazione di questo tipo si consiglia di utilizzare una classe di oggetti specifica, anziché Object.
Strutture e routine
È possibile passare una struttura come argomento di routine. Questa condizione è illustrata nell'esempio che segue.
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 la struttura viene passata per riferimento, operazione che consente alla routine di modificare i propri elementi in modo che le modifiche abbiano effetto nel codice chiamante. Se si desidera proteggere una struttura da tali modifiche, passarla per valore.
È inoltre possibile restituire una struttura da una routine Function. Nell'esempio riportato di seguito viene illustrata questa situazione.
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. Questa condizione è illustrata nell'esempio che segue.
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"
È inoltre possibile utilizzare questa tecnica per incapsulare una struttura definita in un modulo all'interno di una struttura definita in un modulo differente.
Le strutture possono contenere altre strutture per un numero arbitrario di livelli.
Vedere anche
Attività
Risoluzione dei problemi relativi ai tipi di dati (Visual Basic)
Procedura: dichiarare una struttura (Visual Basic)
Riferimenti
Concetti
Tipi di dati compositi (Visual Basic)
Variabili di struttura (Visual Basic)
Strutture e classi (Visual Basic)
Altre risorse
Tipi di dati elementari (Visual Basic)