A8. Le strutture
Una struttura è un tipo di dati complesso, o derivato, poichè è formato da un gruppo di dati di tipo semplice, chiamati campi. Abbiamo visto infatti nella lezione precedente che le variabili possono essere di molti tipi (String, Int16, Byte, Char ecc...), ma non sempre i programmi necessitano solo di quelli: il Vb.Net offre la funzionalità di poter creare nuovi tipi di dato raggruppando altri tipi semplici o complessi, con la possibilità di fornire a questi nuovi operatori e metodi per agire su di essi. La sintassi standard con cui si dichirano le strutture fa uso delle parole riservate Structure [Nome della Struttura]...End Structure, all'interno delle quali vengono descritti i vari campi.
Le strutture non possono essere dichiarate all'interno di metodi, ma devono trovare posto nel corpo di un modulo, di un namespace o di una classe. Un esempio:Structure [nome]Dim [campo1]As [tipo]Dim [campo2]As [tipo]'altri campi... End Structure
Come si può facilmente osservare dal sorgente, anche per le strutture come per le classi, viene usato l'operatore punto '.' per accedere ai campi interni. Un'altra cosa interessante è il fatto che si possano dichiarare variabili del tipo della struttura appena creata: le strutture infatti sono tipi di dato comuni, tipi value per la precisione, e possono essere utilizzate allo stesso modo di Int32, Char, Byte, eccetera. Alcune delle migliori potenzialità delle strutture risiedono in due punti fondamentali: possono essere passate come parametri ad una procedura/funzione (come vedremo in seguito) e si possono dichiarare array di strutture. Si possono trovare, però, anche delle strutture come campi di altre strutture: possiamo quindi assimilare la struttura ad una scatola, dentro la quale si possono trovare oggetti, ma anche altre scatole che a loro volta contengono altro...Module Module1Structure UtenteDim Nick, Password, DescrizioneAs String End Structure Sub Main()Dim UnoAs Utente Console.Writeline("Inserire il proprio nickname:") Uno.Nick = Console.Readline Console.Writeline("Inserire la password:") Uno.Password = Console.Readline Console.Writeline("Inserire una descrizione breve:") Uno.Descrizione = Console.Readline'Ora abbiamo una struttura che contiene i nostri dati Console.Readkey()End Sub End Module
'Esempio di strutture come campi di altre strutture Structure Struttura1Dim Campo1, Campo2As Int32Dim Campo3As String End Structure Structure Struttura2Dim Campo1, Campo2As Struttura1Dim Campo3As Int32End Structure '... 'Accede al campo1 del campo1 della struttura2: Dim SAs Struttura2 S.Campo1.Campo1 = 5
Il costrutto With
Capita con le strutture che si debba accedere ad ogni campo per, ad esempio, una scrittura a video o su file. Il costrutto with ci permette
di non ripetere sempre il nome della struttura, ma di accedere ai singoli membri singolarmente. La sintassi è la seguente:
Ad esempio:With [Nome struttura] .[campo1] .[campo2]'eccetera End With
Ma il costrutto With non è utile solo per gli assegnamenti, anche per altro:Module Module1Structure PersonaDim Nome, Cognome, IndirizzoAs String Dim Email, MsnAs String End Structure Sub Main()Dim UnoAs PersonaWith Uno .Nome = "Nino" .Cognome = "Rinaldi" .Email = "nr@dominio.it" .Indirizzo = "Via dei Peschi, Pavia" .Msn = "nr@dominio.it"End With End Sub End Module
Module Module1Structure PersonaDim Nome, Cognome, IndirizzoAs String Dim Email, MsnAs String End Structure Sub Main()Dim UnoAs PersonaWith Uno .Nome = "Nino" .Cognome = "Rinaldi" .Email = "nr@dominio.it" .Indirizzo = "Via dei Peschi, Pavia" .Msn = "nr@dominio.it" Console.WriteLine(.Nome + " " + .Cognome + " abita a " + .Indirizzo)End With End Sub End Module
The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.



