Condividi tramite


Strutture e altri elementi di programmazione

Aggiornamento: novembre 2007

È 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. Questa condizione è illustrata nell'esempio che segue.

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

Procedura: dichiarare una struttura

Concetti

Tipi di dati in Visual Basic

Tipi di dati compositi

Variabili di struttura

Strutture e classi

Raccomandazioni sull'aggiornamento: evitare l'impiego di matrici e di stringhe a lunghezza fissa in tipi definiti dall'utente

Riferimenti

Istruzione Structure

Altre risorse

Tipi di dati di base

Implementazione del tipo di dati

Strutture: tipi di dati dell'utente