Casino online











Mercato forex






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.
Structure [nome]
  Dim [campo1] As [tipo]
  Dim [campo2] As [tipo]
  'altri campi...
End Structure 
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:
Module Module1
  Structure Utente
    Dim Nick, Password, Descrizione As String
  End Structure
  
  Sub Main()
    Dim Uno As 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 
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...
'Esempio di strutture come campi di altre strutture
Structure Struttura1
  Dim Campo1, Campo2 As Int32
  Dim Campo3 As String
End Structure

Structure Struttura2
  Dim Campo1, Campo2 As Struttura1
  Dim Campo3 As Int32
End Structure
'...
'Accede al campo1 del campo1 della struttura2:
Dim S As 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:
With [Nome struttura]
  .[campo1]
  .[campo2]
  'eccetera
End With 
Ad esempio:
Module Module1
   Structure Persona
        Dim Nome, Cognome, Indirizzo As String
        Dim Email, Msn As String
    End Structure
    
    Sub Main()
        Dim Uno As Persona

        With Uno
            .Nome = "Nino"
            .Cognome = "Rinaldi"
            .Email = "nr@dominio.it"
            .Indirizzo = "Via dei Peschi, Pavia"
            .Msn = "nr@dominio.it"
        End With
    End Sub
End Module 
Ma il costrutto With non è utile solo per gli assegnamenti, anche per altro:
Module Module1
   Structure Persona
        Dim Nome, Cognome, Indirizzo As String
        Dim Email, Msn As String
    End Structure
    
    Sub Main()
        Dim Uno As Persona

        With 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.