Condividi tramite


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

Istruzione Structure

Concetti

Tipi di dati in Visual Basic

Tipi di dati compositi (Visual Basic)

Variabili di struttura (Visual Basic)

Strutture e classi (Visual Basic)

Altre risorse

Tipi di dati elementari (Visual Basic)

Implementazione del tipo di dati (Visual Basic)

Strutture (Visual Basic)