Differenze tra le versioni di "Strutture: dichiarazione ed uso"
Riga 3: | Riga 3: | ||
In Gambas3 la ''Struttura'', analogamente ad un oggetto, può essere considerata una Classe senza metodi, che, come nel C, definisce e si riserva una porzione di memoria. | In Gambas3 la ''Struttura'', analogamente ad un oggetto, può essere considerata una Classe senza metodi, che, come nel C, definisce e si riserva una porzione di memoria. | ||
− | Dichiariamo una Struttura con dei | + | Dichiariamo una Struttura con dei membri, che dovranno essere riempiti con dei valori. Tale Struttura avrà un proprio nome e farà da ''modello'' alle particolari variabili di tipo ''Struttura'' che saranno effettivamente utilizzate per contenere valori. |
Nell'esempio che segue, la ''Struttura'' modello avrà il nome: ''NomeStruttura'', mentre la variabile del tipo di quella ''Struttura'' la chiameremo: ''variabileStruttura'': | Nell'esempio che segue, la ''Struttura'' modello avrà il nome: ''NomeStruttura'', mentre la variabile del tipo di quella ''Struttura'' la chiameremo: ''variabileStruttura'': | ||
− | Public Struct <Font Color= #B22222>NomeStruttura</font> <Font Color= #006400>' ''definiamo i | + | Public Struct <Font Color= #B22222>NomeStruttura</font> <Font Color= #006400>' ''definiamo i membri della Struttura "modello"''</font> |
− | <Font Color= #006400>' ''Questa Struttura si riserverà, occupandola, | + | <Font Color= #006400>' ''Questa Struttura si riserverà, occupandola, 8 byte di memoria in tutto:''</font> |
− | valore1 As | + | valore1 As Byte <Font Color= #006400>' ''Occupa 1 byte + un altro in questo caso per l'arrotondamento (byte di indici 0 e 1) ''</font> |
− | valore2 As | + | valore2 As Short <Font Color= #006400>' ''Occupa 2 byte: da quello di indice 2 a quello di indice 3''</font> |
− | valore3 as Integer <Font Color= #006400>' '' | + | valore3 as Integer <Font Color= #006400>' ''Occupa 4 byte: da quello di indice 4 a quello di indice 7''</font> |
End Struct | End Struct | ||
Riga 23: | Riga 23: | ||
− | '''Public''' Sub | + | '''Public''' Sub Main() |
Dim variabValor as Byte | Dim variabValor as Byte | ||
− | + | <Font Color= #006400>' ''Attribuiamo un valore a ciascun membro della variabile di tipo Struttura:''</font> | |
− | + | <Font Color= #0000FF>variabileStruttura</font>.valore1 = 4 | |
− | <Font Color= #006400>' ''Attribuiamo un valore a ciascun | + | <Font Color= #0000FF>variabileStruttura</font>.valore2 = 444 |
− | + | <Font Color= #0000FF>variabileStruttura</font>.valore3 = 44444 | |
− | <Font Color= #0000FF>variabileStruttura</font>.valore1 = | ||
− | <Font Color= #0000FF>variabileStruttura</font>.valore2 = | ||
− | <Font Color= #0000FF>variabileStruttura</font>.valore3 = | ||
− | |||
− | |||
− | |||
− | |||
− | <Font Color= #006400>' '' | + | <Font Color= #006400>' ''Quindi operiamo con i valori contenuti dalla variabile "variabStruttura",'' |
' ''per esempio li facciamo mostrare in console:</font> | ' ''per esempio li facciamo mostrare in console:</font> | ||
With <Font Color= #0000FF>variabileStruttura</font> | With <Font Color= #0000FF>variabileStruttura</font> | ||
Riga 52: | Riga 45: | ||
=Strutture contenenti Vettori e Matrici= | =Strutture contenenti Vettori e Matrici= | ||
− | Le Strutture possono essere costituite da | + | Le Strutture possono essere costituite da membri di variabili vettoriali (''Array'') e Matrici. |
Esempio: | Esempio: | ||
Riga 118: | Riga 111: | ||
<Font Color= #006400>' ''...quindi la Struttura principale, ossia quella che conterrà la Struttura secondaria interna.'' | <Font Color= #006400>' ''...quindi la Struttura principale, ossia quella che conterrà la Struttura secondaria interna.'' | ||
− | ' ''In un suo | + | ' ''In un suo membro verrà dichiarata la variabile di tipo della Struttura secondaria (che si intende appunto contenere in quella principale):''</font> |
Public Struct <Font Color= #0000FF>StrutturaPrincipale</font> | Public Struct <Font Color= #0000FF>StrutturaPrincipale</font> | ||
prB As Byte | prB As Byte | ||
Riga 134: | Riga 127: | ||
a = 1 | a = 1 | ||
− | <Font Color= #006400>' ''Assegnamo i valori alle variabili contenute nei | + | <Font Color= #006400>' ''Assegnamo i valori alle variabili contenute nei membri della variabile Struttura principale:''</font> |
With <Font Color= #1E90FF>struttVariab</font> | With <Font Color= #1E90FF>struttVariab</font> | ||
.prB = 10 | .prB = 10 | ||
Riga 290: | Riga 283: | ||
For j = 0 To eV.Max | For j = 0 To eV.Max | ||
<FONT color=#006400>' ''Viene creata, quindi, la nuova variabile,'' | <FONT color=#006400>' ''Viene creata, quindi, la nuova variabile,'' | ||
− | ' ''e vengono assegnati dei valori ai suoi | + | ' ''e vengono assegnati dei valori ai suoi membri:''</font> |
With eV[j] = New Esempio | With eV[j] = New Esempio | ||
.b = j | .b = j | ||
Riga 309: | Riga 302: | ||
Dim j As Byte | Dim j As Byte | ||
− | <FONT color=#006400>' ''Si verifica quindi il valori contenuti dai | + | <FONT color=#006400>' ''Si verifica quindi il valori contenuti dai membri di ciascuna variabile creata:''</font> |
− | |||
For j = 0 To eV.Max | For j = 0 To eV.Max | ||
Riga 409: | Riga 401: | ||
For j = 0 To eV.Max | For j = 0 To eV.Max | ||
− | <FONT color=#006400>' ''Viene creata, quindi, la nuova variabile, | + | <FONT color=#006400>' ''Viene creata, quindi, la nuova variabile, e vengono assegnati dei valori ai suoi membri:''</font> |
− | |||
With eV[j] = New Esempio | With eV[j] = New Esempio | ||
.b = j | .b = j | ||
Riga 429: | Riga 420: | ||
Dim j As Byte | Dim j As Byte | ||
− | <FONT color=#006400>' ''Si verifica quindi il valori contenuti dai | + | <FONT color=#006400>' ''Si verifica quindi il valori contenuti dai membri di ciascuna variabile creata:''</font> |
− | |||
For j = 0 To eV.Max | For j = 0 To eV.Max | ||
Riga 445: | Riga 435: | ||
=Strutture che contengono variabili vettoriali di tipo ''Struttura''= | =Strutture che contengono variabili vettoriali di tipo ''Struttura''= | ||
− | Le ''Strutture'' possono contenere | + | Le ''Strutture'' possono contenere membri rappresentati da variabili vettoriali (''array''), o anche matrici, di tipo ''Struttura''. Gli elementi di tali variabili vettoriali, o matrici, possono essere sia definiti che indefiniti, e dunque in quest'ultimo caso incrementabili nelle modalità viste nel paragrafo precedente. |
<BR>In ogni caso la sintassi seguirà le forme viste in precedenza. | <BR>In ogni caso la sintassi seguirà le forme viste in precedenza. | ||
==Variabile vettoriale di tipo ''Struttura'' con numero di elementi definito== | ==Variabile vettoriale di tipo ''Struttura'' con numero di elementi definito== | ||
− | Nel caso in cui la ''Struttura'' contenga uno o più | + | Nel caso in cui la ''Struttura'' contenga uno o più membri rappresentati da variabili vettoriali di tipo ''Struttura'' con numero di elementi definito, si procederà nel seguente modo: |
Public Struct <FONT color=Red>Struttura_Secondaria</font> | Public Struct <FONT color=Red>Struttura_Secondaria</font> | ||
a As Byte | a As Byte | ||
Riga 460: | Riga 450: | ||
' ''dalla sua relativa variabile vettoriale, denominata "str_sec", usando le parole "As Struct":''</font> | ' ''dalla sua relativa variabile vettoriale, denominata "str_sec", usando le parole "As Struct":''</font> | ||
Public Struct <FONT color=Blue>Struttura_Principale</font> | Public Struct <FONT color=Blue>Struttura_Principale</font> | ||
− | + | primo_membro As Integer | |
− | + | secondo_membro As Integer | |
<FONT color=gray>' ''Dichiariamo mediante la parola "Struct" la variabile vettoriale di tipo della Struttura denominata "Struttura_Secondaria":''</font> | <FONT color=gray>' ''Dichiariamo mediante la parola "Struct" la variabile vettoriale di tipo della Struttura denominata "Struttura_Secondaria":''</font> | ||
<FONT color=Green>str_sec['''n''']</font> As Struct <FONT color=Red>Struttura_Secondaria</font> | <FONT color=Green>str_sec['''n''']</font> As Struct <FONT color=Red>Struttura_Secondaria</font> | ||
Riga 475: | Riga 465: | ||
Public Struct Struttura_Principale | Public Struct Struttura_Principale | ||
− | + | primo_membro As Integer | |
− | + | secondo_membro As Integer | |
str_sec[3] As Struct Struttura_Secondaria | str_sec[3] As Struct Struttura_Secondaria | ||
End Struct | End Struct | ||
Riga 497: | Riga 487: | ||
==Variabile vettoriale di tipo ''Struttura'' con numero di elementi indefinito== | ==Variabile vettoriale di tipo ''Struttura'' con numero di elementi indefinito== | ||
− | Nel caso in cui la ''Struttura'' contenga uno o più | + | Nel caso in cui la ''Struttura'' contenga uno o più membri rappresentati da variabili vettoriali di tipo ''Struttura'' con numero di elementi non definito, si procederà nel seguente modo: |
Public Struct <FONT color=Red>Struttura_Secondaria</font> | Public Struct <FONT color=Red>Struttura_Secondaria</font> | ||
a As Byte | a As Byte | ||
Riga 506: | Riga 496: | ||
<FONT color=gray>' ''Quindi la "Struttura" sarà rappresentata all'interno della Struttura principale dalla sua relativa variabile vettoriale, denominata "str_sec":''</font> | <FONT color=gray>' ''Quindi la "Struttura" sarà rappresentata all'interno della Struttura principale dalla sua relativa variabile vettoriale, denominata "str_sec":''</font> | ||
Public Struct <FONT color=Blue>Struttura_Principale</font> | Public Struct <FONT color=Blue>Struttura_Principale</font> | ||
− | + | primo_membro As Integer | |
− | + | secondo_membro As Integer | |
<FONT color=gray>' ''Dichiariamo la variabile vettoriale di tipo della Struttura denominata "Struttura_Secondaria[]":''</font> | <FONT color=gray>' ''Dichiariamo la variabile vettoriale di tipo della Struttura denominata "Struttura_Secondaria[]":''</font> | ||
<FONT color=Green>str_sec</font> As <FONT color=Red>Struttura_Secondaria[]</font> | <FONT color=Green>str_sec</font> As <FONT color=Red>Struttura_Secondaria[]</font> | ||
Riga 521: | Riga 511: | ||
Public Struct Struttura_Principale | Public Struct Struttura_Principale | ||
− | + | primo_membro As Integer | |
− | + | secondo_membro As Integer | |
str_sec As Struttura_Secondaria[] | str_sec As Struttura_Secondaria[] | ||
End Struct | End Struct |
Versione delle 07:50, 5 ott 2014
La Struttura similmente al vettore (Array) aggrega due o più elementi. Però, mentre il vettore aggrega elementi del medesimo tipo (per esempio tutti valori di tipo Integer, o di tipo Byte, etc), la Struttura aggrega solitamente (ma non necessariamente) elementi di tipo diverso.
In Gambas3 la Struttura, analogamente ad un oggetto, può essere considerata una Classe senza metodi, che, come nel C, definisce e si riserva una porzione di memoria.
Dichiariamo una Struttura con dei membri, che dovranno essere riempiti con dei valori. Tale Struttura avrà un proprio nome e farà da modello alle particolari variabili di tipo Struttura che saranno effettivamente utilizzate per contenere valori.
Nell'esempio che segue, la Struttura modello avrà il nome: NomeStruttura, mentre la variabile del tipo di quella Struttura la chiameremo: variabileStruttura:
Public Struct NomeStruttura ' definiamo i membri della Struttura "modello" ' Questa Struttura si riserverà, occupandola, 8 byte di memoria in tutto: valore1 As Byte ' Occupa 1 byte + un altro in questo caso per l'arrotondamento (byte di indici 0 e 1) valore2 As Short ' Occupa 2 byte: da quello di indice 2 a quello di indice 3 valore3 as Integer ' Occupa 4 byte: da quello di indice 4 a quello di indice 7 End Struct ' Dichiariamo una variabile di tipo Struttura (composta a perfetta immagine della Struttura modello): Private variabileStruttura As New NomeStruttura ' E' possibile anche usare la parola "Struct" invece di New: Private variabileStruttura As Struct NomeStruttura Public Sub Main() Dim variabValor as Byte ' Attribuiamo un valore a ciascun membro della variabile di tipo Struttura: variabileStruttura.valore1 = 4 variabileStruttura.valore2 = 444 variabileStruttura.valore3 = 44444 ' Quindi operiamo con i valori contenuti dalla variabile "variabStruttura", ' per esempio li facciamo mostrare in console: With variabileStruttura Print .valore1 Print .valore2 Print .valore3 End With End
Indice
Strutture contenenti Vettori e Matrici
Le Strutture possono essere costituite da membri di variabili vettoriali (Array) e Matrici.
Esempio:
Public Struct StrutturaModello arB[10] As Byte ' array monodimensionale definito arI As Integer[] ' array monodimensionale non definito mt$[10, 4] As String ' matrice End Struct Private variabileStruttura As New StrutturaModello Public Sub Form_Open() Dim a, m As Byte variabileStruttura.arI = New Integer[] For a = 0 To 9 With variabileStruttura .arB[a] = a .arI.Add(a + a) For m = 0 To 3 .mt$[a, m] = Chr(variabileStruttura.arI[a] + 70) Next End With Next End Public Sub Button1_Click() Dim a, m As Byte For a = 0 To 9 With variabileStruttura Print .arB[a] Print .arI[a] For m = 0 To 3 Print .mt$[a, m] Next End With Next End
Strutture che contengono altre Strutture
Le Strutture possono contenere, come proprio elemento, altre Strutture. Da tenere presente che è necessario dichiarare e definire la Struttura, che sarà contenuta nella Struttura principale, prima della dichiarazione della Struttura principale contenente.
Esempio:
' va dichiarata e definita innanzitutto la Struttura ' che sarà contenuta nella Struttura principale: Public Struct strutturaInterna sb As Byte sI As Integer s$ As String End Struct ' ...quindi la Struttura principale, ossia quella che conterrà la Struttura secondaria interna. ' In un suo membro verrà dichiarata la variabile di tipo della Struttura secondaria (che si intende appunto contenere in quella principale): Public Struct StrutturaPrincipale prB As Byte prI As Integer internaStru As Struct strutturaInterna End Struct Private struttVariab As New StrutturaPrincipale Public Sub Form_Open() Dim a As Byte a = 1 ' Assegnamo i valori alle variabili contenute nei membri della variabile Struttura principale: With struttVariab .prB = 10 .prI = 1000 .internaStru.sb = a .internaStru.sI = struttVariab.prI + a .internaStru.s$ = "prova " & Str(a) End With End ' Andiamo a mostrare i risultati in console: Public Sub Button1_Click() With struttVariab Print .prB Print .prI Print .internaStru.sb Print .internaStru.sI Print .internaStru.s$ End With End
Il risultato in console sarà:
10
1000
1
1001
prova 1
Variabili array di tipo "Struttura"
E' infine possibile realizzare variabili array di tipo "Struttura".
La dichiarazione di variabili vettoriali di tipo Struttura può avvenire:
- mediante la parola Struct. Tale dichiarazione è Statica;
- mediante la parola New. Tale dichiarazione è Dinamica.
Vettori con numero di elementi definito
Possiamo dichiarare e creare variabili array di tipo Struttura con numero di elementi definito.
1° esempio
Public Struct strutturaModello prB As Byte prI As Integer End Struct ' Dichiariamo la variabile della Struttura come array con numero di elementi definito. ' In questo tipo di esempio sarà necessario inserire dopo "As" la parola "Struct": Private strutturaVariabile[10] As Struct StrutturaModello Public Sub Form_Open() Dim a As Byte ' Assegnamo i valori agli elementi della variabile array di tipo Struttura: For a = 0 To 9 With strutturaVariabile[a] .prB = a .prI = 1000 + a End With Next End ' Andiamo a mostrare i risultati in console: Public Sub Button1_Click() Dim a As Byte For a = 0 To 9 With strutturaVariabile[a] Print .prB Print .prI End With Next End
2° esempio
Public Struct strutturaModello prB As Byte prI As Integer End Struct ' Dichiariamo la variabile della Struttura come array con numero di elementi definito. ' In questo caso sarà necessario inserire dopo "As" la parola "New": Private strutturaVariabile As New StrutturaModello[10] Public Sub Form_Open() Dim a As Byte ' Assegnamo i valori agli elementi della variabile array di tipo Struttura: For a = 0 To 9 With strutturaVariabile[a] = New StrutturaModello .prB = a .prI = 1000 + a End With Next End ' Andiamo a mostrare i risultati in console: Public Sub Button1_Click() Dim a As Byte For a = 0 To 9 With strutturaVariabile[a] Print .prB Print .prI End With Next End
Variazione successiva del numero degli elementi già definito
E' possibile variare successivamente, anche in modo ricorsivo, il numero degli elementi di una variabile vettoriale (array) di tipo Struttura, purché il numero dei suoi elementi, preliminarmente dichiarati, sia maggiore di zero.
Nell'esempio che segue dichiariamo una variabile array di tipo Struttura con numero di elementi uguale a 3. Successivamente varieremo più volte detto numero portandolo complessivamente a 6:
Public Struct esempio b As Byte i As Integer End Struct ' Viene dichiarata una variabile vettoriale (array) del tipo della "Struttura" denominata "Esempio", ' e contestualmente viene impostato ad esempio a 3 il numero iniziale degli elementi che si provvederà a variare successivamente: Private eV As New Esempio[3] Public Sub Form_Open() Dim j, k As Byte ' Il ciclo imposta volta per volta, incrementandolo, il valore del numero degli elementi ' della variabile vettoriale di tipo "Struttura": For k = 4 To 6 eV = New Esempio[k] Next For j = 0 To eV.Max ' Viene creata, quindi, la nuova variabile, ' e vengono assegnati dei valori ai suoi membri: With eV[j] = New Esempio .b = j .i = j + 1 End With Next ' Si verifica il numero complessivo finale ' degli elementi della variabile vettoriale: Print "eV.Count = "; eV.Count End Public Sub Button1_Click() Dim j As Byte ' Si verifica quindi il valori contenuti dai membri di ciascuna variabile creata: For j = 0 To eV.Max With eV[j] Print "b = "; .b Print "i = "; .i End With Next End
Vettori con numero di elementi indefinito
E' possibile creare una variabile array di tipo Struttura avente numero di elementi non predefinito. Si potranno quindi aggiungere gli elementi alla variabile vettore ogni qual volta le si attribuisce una semplice variabile di tipo Struttura.
Poiché, come si è avuto modo già di precisare, la dichiarazione di un vettore di tipo Struttura mediante la parola New conferisce dinamicità alla variabile vettoriale medesima, si farà uso di tale parola per consentire l'incremento degli elementi della variabile vettoriale di tipo Struttura.
Esempio:
Public Struct strutturaModello prB As Byte prI As Integer End Struct ' Dichiariamo la variabile della Struttura come array con numero di elementi indefinito. ' In questo caso sarà necessario inserire dopo "As" la parola "New": Private prima As New StrutturaModello[] Public Sub Form_Open() Dim a As Byte ' Dichiariamo un'altra variabile del tipo della Struttura modello: Dim seconda As StrutturaModello ' Assegnamo i valori agli elementi della variabile normale di tipo Struttura: For a = 0 To 9 ' Va prevista ovviamente la creazione di ogni variabile di tipo Struttura: seconda = New StrutturaModello With seconda .prB = a .prI = 1000 + a End With ' La variabile Struttura array vuole una variabile Struttura (non array) del tipo "StrutturaModello": prima.Add(seconda) Next End ' Andiamo a mostrare i risultati in console: Public Sub Button1_Click() Dim a As Byte For a = 0 To 9 With prima[a] Print .prB Print .prI End With Next End
Impostazione successiva del numero di elementi
E' possibile impostare successivamente il numero di elementi di una variabile vettoriale dichiarata priva di un numero definito di elementi.
Nell'esempio che segue dichiariamo una variabile array di tipo Struttura senza definire preventivamente il numero dei suoi elementi. Esso verrà impostato solo successivamente portandolo complessivamente a 6:
Public Struct esempio b As Byte i As Integer End Struct ' Viene dichiarata una variabile vettoriale (array) del tipo della "Struttura" denominata "Esempio", ' e contestualmente viene impostato ad esempio a 3 il numero iniziale degli elementi che si provvederà a variare successivamente: Private eV As Esempio[] Public Sub Form_Open() Dim j, k As Byte ' Il ciclo imposta volta per volta, incrementadolo sino al valore stabilito, il numero degli elementi della variabile vettoriale di tipo "Struttura": For k = 1 To 6 ' Viene variato il numero degli elementi della variabile vettoriale ' del tipo della Struttura denominata "esempio": eV = New Esempio[k] Next For j = 0 To eV.Max ' Viene creata, quindi, la nuova variabile, e vengono assegnati dei valori ai suoi membri: With eV[j] = New Esempio .b = j .i = j + 1 End With Next ' Si verifica il numero complessivo finale ' degli elementi della variabile vettoriale: Print "eV.Count = "; eV.Count End Public Sub Button1_Click() Dim j As Byte ' Si verifica quindi il valori contenuti dai membri di ciascuna variabile creata: For j = 0 To eV.Max With eV[j] Print "b = "; .b Print "i = "; .i End With Next End
Strutture che contengono variabili vettoriali di tipo Struttura
Le Strutture possono contenere membri rappresentati da variabili vettoriali (array), o anche matrici, di tipo Struttura. Gli elementi di tali variabili vettoriali, o matrici, possono essere sia definiti che indefiniti, e dunque in quest'ultimo caso incrementabili nelle modalità viste nel paragrafo precedente.
In ogni caso la sintassi seguirà le forme viste in precedenza.
Variabile vettoriale di tipo Struttura con numero di elementi definito
Nel caso in cui la Struttura contenga uno o più membri rappresentati da variabili vettoriali di tipo Struttura con numero di elementi definito, si procederà nel seguente modo:
Public Struct Struttura_Secondaria a As Byte b As Integer End Struct ' Quindi la "Struttura" sarà rappresentata all'interno della Struttura principale ' dalla sua relativa variabile vettoriale, denominata "str_sec", usando le parole "As Struct": Public Struct Struttura_Principale primo_membro As Integer secondo_membro As Integer ' Dichiariamo mediante la parola "Struct" la variabile vettoriale di tipo della Struttura denominata "Struttura_Secondaria": str_sec[n] As Struct Struttura_Secondaria End Struct
Esempio pratico
Public Struct Struttura_Secondaria a As Byte b As Integer End Struct Public Struct Struttura_Principale primo_membro As Integer secondo_membro As Integer str_sec[3] As Struct Struttura_Secondaria End Struct Public Sub Main() Dim sp As New Struttura_Principale sp.str_sec[0].a = 9 sp.str_sec[1].a = 10 Print sp.str_sec[0].a Print sp.str_sec[1].a End
Variabile vettoriale di tipo Struttura con numero di elementi indefinito
Nel caso in cui la Struttura contenga uno o più membri rappresentati da variabili vettoriali di tipo Struttura con numero di elementi non definito, si procederà nel seguente modo:
Public Struct Struttura_Secondaria a As Byte b As Integer End Struct ' Quindi la "Struttura" sarà rappresentata all'interno della Struttura principale dalla sua relativa variabile vettoriale, denominata "str_sec": Public Struct Struttura_Principale primo_membro As Integer secondo_membro As Integer ' Dichiariamo la variabile vettoriale di tipo della Struttura denominata "Struttura_Secondaria[]": str_sec As Struttura_Secondaria[] End Struct
Esempio pratico
Public Struct Struttura_Secondaria a As Byte b As Integer End Struct Public Struct Struttura_Principale primo_membro As Integer secondo_membro As Integer str_sec As Struttura_Secondaria[] End Struct Public Sub Main() Dim sp As New Struttura_Principale Dim s1, s2, s3 As New Struttura_Secondaria s1.a = 99 s2.a = 100 s3.a = 101 sp.str_sec = New Struttura_Secondaria[] sp.str_sec.Add(s1) sp.str_sec.Add(s2) sp.str_sec.Add(s3) Print sp.str_sec[0].a Print sp.str_sec[1].a Print sp.str_sec[2].a End