Condividi tramite


Istruzione Structure

Consente di dichiarare il nome di una struttura e introduce la definizione di variabili, proprietà, eventi e routine comprese dalla struttura.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
    [ Implements interfacenames ]
    [ datamemberdeclarations ]
    [ methodmemberdeclarations ]
End Structure

Parti

Termine

Definizione

attributelist

Parametro facoltativo. Vedere Elenco degli attributi.

accessmodifier

Parametro facoltativo. ad esempio uno dei seguenti:

Vedere Livelli di accesso in Visual Basic.

Shadows

Parametro facoltativo. Vedere Shadows.

Partial

Parametro facoltativo. Indica una definizione parziale della struttura. Vedere Partial (Visual Basic).

name

Obbligatorio. Nome di questa struttura. Per informazioni, vedere Nomi di elementi dichiarati (Visual Basic).

Of

Parametro facoltativo. Specifica che si tratta di una struttura generica.

typelist

Obbligatoria se si utilizza la parola chiave Of. Elenco di parametri di tipo per la struttura. Vedere Elenco dei tipi.

Implements

Parametro facoltativo. Indica che la struttura consente di implementare i membri di una o più interfacce. Vedere Istruzione Implements.

interfacenames

Obbligatoria se si utilizza l'istruzione Implements. Nomi delle interfacce implementate dalla struttura.

datamemberdeclarations

Obbligatorio. Zero o più istruzioni Const, Dim, Enum o Event che dichiarano i membri dei dati della struttura.

methodmemberdeclarations

Parametro facoltativo. Nessuna o più dichiarazioni di routine Function, Operator, Property o Sub che fungono da membri di metodo della struttura.

End Structure

Obbligatorio. Consente di terminare la definizione Structure.

Note

L'istruzione Structure definisce un tipo di valore composto personalizzabile. Una struttura rappresenta una generalizzazione del tipo definito dall'utente (UDT, User-Defined Type) supportato dalle precedenti versioni di Visual Basic. Per ulteriori informazioni, vedere Strutture (Visual Basic).

Le strutture supportano molte delle funzionalità supportate dalle classi. Le strutture che ad esempio possono contenere proprietà e routine, sono in grado di implementare interfacce e possono disporre di costruttori parametrizzati. Le differenze tra strutture e classi sono tuttavia significative a livello di ereditarietà, dichiarazione e utilizzo. Inoltre le classi sono tipi di riferimenti mentre le strutture sono tipi di valori. Per ulteriori informazioni, vedere Strutture e classi (Visual Basic).

È possibile utilizzare Structure solo a livello di modulo o di spazio dei nomi. Il altri termini, il contesto della dichiarazione per una struttura deve essere costituito di un file di origine, uno spazio dei nomi, una classe, una struttura, un modulo o un'interfaccia, ma non una routine o un blocco. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti (Visual Basic).

L'impostazione predefinita della struttura è l'accesso Friend (Visual Basic). È possibile modificarne i livelli di accesso mediante gli appositi modificatori. Per ulteriori informazioni, vedere Livelli di accesso in Visual Basic.

Regole

  • Annidamento. È possibile definire una struttura all'interno di un altra. La struttura esterna viene definita struttura contenente, mentre la struttura interna viene definita struttura annidata. Attraverso la struttura contenente non è tuttavia possibile accedere ai membri di una struttura annidata. È invece necessario dichiarare una variabile del tipo di dati della struttura annidata.

  • Dichiarazione di membro. È necessario dichiarare tutti i membri di una struttura. Un membro di struttura non può essere Protected o Protected Friend in quanto la struttura non prevede ereditarietà. La struttura stessa tuttavia, può essere Protected o Protected Friend.

    È possibile dichiarare zero o più variabili non condivise oppure eventi non condivisi o non personalizzati in una struttura. Non è possibile che siano presenti solo costanti, proprietà e routine, anche se alcune di esse sono di tipo non condiviso.

  • Inizializzazione. Non è possibile inizializzare il valore di un membro dati non condiviso di una struttura nell'ambito della relativa dichiarazione. È invece necessario che tale membro dati venga inizializzato per mezzo di un costruttore con parametri nella struttura oppure che gli venga assegnato un valore dopo la creazione di un'istanza della struttura.

  • Ereditarietà. Una struttura non può ereditare da qualsiasi tipo diverso da ValueType, dal quale ereditano tutte le strutture. In particolare, una struttura non può ereditare da un'altra.

    Non è possibile utilizzare l'Istruzione Inherits nella definizione di una struttura, anche per specificare ValueType.

  • Implementazione. Se la struttura utilizza l'Istruzione Implements, è necessario implementare ogni membro definito da ogni interfaccia specificata in interfacenames.

  • Proprietà predefinita. Una struttura è in grado di specificare al massimo una proprietà come proprietà predefinita, utilizzando il modificatore Default (Visual Basic). Per ulteriori informazioni, vedere Default (Visual Basic).

Comportamento

  • Livello di accesso. All'interno di una struttura è possibile dichiarare ogni membro con il suo livello di accesso personale. L'impostazione predefinita dei membri della struttura è l'accesso Public (Visual Basic). Si noti che se la struttura stessa ha un livello di accesso più ristretto, questo restringe automaticamente l'accesso ai suoi membri, anche se si regolano i livelli di accesso dei membri con i modificatori di accesso.

  • Ambito. Una struttura si trova nell'area di validità tramite lo spazio dei nomi, la classe, la struttura o il modulo che la contiene.

    L'ambito di un membro di ogni struttura è l'intera struttura.

  • Durata. Una struttura non dispone di una propria durata, ma ogni istanza di quella struttura dispone di una durata indipendente da tutte le altre.

    La durata di un'istanza comincia quando viene creata da una clausola Operatore New (Visual Basic). e termina quando termina la durata della variabile che la contiene.

    Non è possibile estendere la durata di un'istanza della struttura. Un'approssimazione alla funzionalità statica della struttura è fornita da un modulo. Per ulteriori informazioni, vedere Istruzione Module.

    La durata dei membri della struttura dipende da come e dove sono stati dichiarati. Per ulteriori informazioni, vedere "Durata" in Istruzione Class (Visual Basic).

  • Qualificazione. È necessario che il codice all'esterno di una struttura qualifichi un nome del membro con il nome di tale struttura.

    Se il codice all'interno di una struttura annidata fa un riferimento non completo a un elemento di programmazione, l'elemento verrà innanzitutto cercato nella struttura annidata, quindi nella sua struttura contenente e via di seguito fino all'elemento contenente più esterno. Per ulteriori informazioni, vedere Riferimenti a elementi dichiarati (Visual Basic).

  • Consumo di memoria. Come nel caso di tutti i tipi di dati compositi, il calcolo del consumo di memoria totale di una struttura in base alla somma delle allocazioni di memoria nominali dei relativi membri presenta alcuni rischi. Non è inoltre possibile supporre con certezza che l'ordine di archiviazione in memoria corrisponda esattamente all'ordine di dichiarazione. Se è necessario controllare il layout di archiviazione di una struttura, è possibile applicare l'attributo StructLayoutAttribute all'istruzione Structure.

Esempio

Nell'esempio seguente l'istruzione Structure viene utilizzata per definire un insieme di dati correlati per un dipendente. Viene illustrato l'utilizzo di membri Public, Friend e Private per riflettere la riservatezza degli elementi di dati. Vengono inoltre illustrati membri di routine, proprietà ed eventi.

Public Structure employee
    ' Public members, accessible from throughout declaration region. 
    Public firstName As String 
    Public middleName As String 
    Public lastName As String 
    ' Friend members, accessible from anywhere within the same assembly. 
    Friend employeeNumber As Integer 
    Friend workPhone As Long 
    ' Private members, accessible only from within the structure itself. 
    Private homePhone As Long 
    Private level As Integer 
    Private salary As Double 
    Private bonus As Double 
    ' Procedure member, which can access structure's private members. 
    Friend Sub calculateBonus(ByVal rate As Single)
        bonus = salary * CDbl(rate)
    End Sub 
    ' Property member to return employee's eligibility. 
    Friend ReadOnly Property eligible() As Boolean 
        Get 
            Return level >= 25
        End Get 
    End Property 
    ' Event member, raised when business phone number has changed. 
    Public Event changedWorkPhone(ByVal newPhone As Long)
End Structure

Vedere anche

Riferimenti

Istruzione Class (Visual Basic)

Istruzione Interface (Visual Basic)

Istruzione Module

Istruzione Dim (Visual Basic)

Istruzione Const (Visual Basic)

Istruzione Enum (Visual Basic)

Istruzione Event

Istruzione Operator

Istruzione Property

Concetti

Strutture e classi (Visual Basic)