Strutture e altri elementi di programmazione (Visual Basic)Structures and Other Programming Elements (Visual Basic)

È possibile utilizzare le strutture insieme a matrici, oggetti e procedure, nonché reciprocamente.You can use structures in conjunction with arrays, objects, and procedures, as well as with each other. Le interazioni utilizzano la stessa sintassi di questi elementi.The interactions use the same syntax as these elements use individually.

Nota

Non è possibile inizializzare alcuno degli elementi della struttura nella dichiarazione della struttura.You cannot initialize any of the structure elements in the structure declaration. È possibile assegnare valori solo agli elementi di una variabile dichiarata come tipo di struttura.You can assign values only to elements of a variable that has been declared to be of a structure type.

Strutture e matriciStructures and Arrays

Una struttura può contenere una matrice come uno o più dei relativi elementi.A structure can contain an array as one or more of its elements. Questa condizione è illustrata nell'esempio seguente.The following example illustrates this.

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 nello stesso modo in cui si accede a una proprietà in un oggetto.You access the values of an array within a structure the same way you access a property on an object. Questa condizione è illustrata nell'esempio seguente.The following example illustrates this.

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

È anche possibile dichiarare una matrice di strutture.You can also declare an array of structures. Questa condizione è illustrata nell'esempio seguente.The following example illustrates this.

Dim allSystems(100) As systemInfo  

Si seguono le stesse regole per accedere ai componenti di questa architettura di dati.You follow the same rules to access the components of this data architecture. Questa condizione è illustrata nell'esempio seguente.The following example illustrates this.

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

Strutture e oggettiStructures and Objects

Una struttura può contenere un oggetto come uno o più elementi.A structure can contain an object as one or more of its elements. Questa condizione è illustrata nell'esempio seguente.The following example illustrates this.

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

È consigliabile usare una classe di oggetti specifica in una dichiarazione di questo tipo, anziché Object .You should use a specific object class in such a declaration, rather than Object.

Strutture e procedureStructures and Procedures

È possibile passare una struttura come argomento di routine.You can pass a structure as a procedure argument. Questa condizione è illustrata nell'esempio seguente.The following example illustrates this.

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, che consente alla procedura di modificarne gli elementi in modo che le modifiche abbiano effetto nel codice chiamante.The preceding example passes the structure by reference, which allows the procedure to modify its elements so that the changes take effect in the calling code. Se si desidera proteggere una struttura in base a tale modifica, passarla per valore.If you want to protect a structure against such modification, pass it by value.

È anche possibile restituire una struttura da una Function routine.You can also return a structure from a Function procedure. Questa condizione è illustrata nell'esempio seguente.The following example illustrates this.

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 struttureStructures Within Structures

Le strutture possono contenere altre strutture.Structures can contain other structures. Questa condizione è illustrata nell'esempio seguente.The following example illustrates this.

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.You can also use this technique to encapsulate a structure defined in one module within a structure defined in a different module.

Le strutture possono contenere altre strutture a una profondità arbitraria.Structures can contain other structures to an arbitrary depth.

Vedi ancheSee also