Istruzione Module

Dichiara il nome di un modulo e introduce la definizione di variabili, proprietà, eventi e procedure incluse nel modulo.

Sintassi

[ <attributelist> ] [ accessmodifier ]  Module name
    [ statements ]
End Module

Parti

attributelist
Facoltativo. Vedere Elenco degli attributi.

accessmodifier
Facoltativo. Può essere uno dei seguenti:

Vedere Access levels in Visual Basic.

name
Obbligatorio. Nome di questo modulo. Vedere Declared Element Names.

statements
Facoltativo. Istruzioni che definiscono le variabili, le proprietà, gli eventi, le routine e i tipi annidati di questo modulo.

End Module
Termina la definizione Module.

Osservazioni:

Un'istruzione Module definisce un tipo riferimento disponibile in tutto lo spazio dei nomi. Un modulo (talvolta chiamato modulo standard) è simile a una classe, ma con alcune importanti distinzioni. Ogni modulo ha esattamente un'istanza e non deve essere creato o assegnato a una variabile. I moduli non supportano l'ereditarietà né implementano interfacce. Si noti che un modulo non è un tipo nel senso in cui lo è una classe o una struttura, non è possibile dichiarare un elemento di programmazione per avere il tipo di dati di un modulo.

È possibile usare Module solo a livello di spazio dei nomi. Ciò significa che il contesto di dichiarazione per un modulo deve essere un file o uno spazio dei nomi di origine e non può essere una classe, una struttura, un modulo, un'interfaccia, una routine o un blocco. Non è possibile annidare un modulo all'interno di un altro modulo o all'interno di qualsiasi tipo. Per altre informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti.

Un modulo ha la stessa durata del programma. Poiché i suoi membri sono tutti Shared, hanno anche una durata uguale a quella del programma.

Per impostazione predefinita, i moduli hanno accesso Friend. È possibile regolare i livelli di accesso con i modificatori di accesso. Per altre informazioni, vedere Livelli di accesso in Visual Basic.

Tutti i membri di un modulo sono implicitamente Shared.

Classi e moduli

Questi elementi presentano molte analogie, ma esistono anche alcune differenze importanti.

  • Terminologia. Le versioni precedenti di Visual Basic riconoscono due tipi di moduli: moduli di classe (file con estensione cls) e moduli standard (file con estensione bas). La versione corrente li chiama rispettivamente classi e moduli.

  • Membri condivisi. È possibile controllare se un membro di una classe è un membro condiviso o un membro dell'istanza.

  • Orientamento agli oggetti. Le classi sono orientate agli oggetti, ma i moduli non lo sono. È quindi possibile creare un'istanza solo di classi come oggetti. Per altre informazioni, vedere Oggetti e classi.

Regole

  • Modificatori. Tutti i membri del modulo sono Shared in modo implicito. Non è possibile utilizzare la parola chiave Shared quando si dichiara un membro, e non è possibile modificare lo stato condiviso di un membro.

  • Ereditarietà. Un modulo non può ereditare da qualsiasi tipo diverso da Object, da cui ereditano tutti i moduli. In particolare, un modulo non può ereditare da un altro.

    Non è possibile usare l'istruzione Inherits in una definizione di modulo, anche per specificare Object.

  • Proprietà predefinita. Non è possibile definire proprietà predefinite in un modulo. Per altre informazioni, vedere Valore predefinito.

Comportamento

  • Livello di accesso. All'interno di un modulo è possibile dichiarare ogni membro con il proprio livello di accesso. Per impostazione predefinita, i membri del modulo sono accesso pubblico, ad eccezione di variabili e costanti, che per impostazione predefinita è Accesso privato. Quando un modulo ha accesso più limitato rispetto a uno dei relativi membri, il livello di accesso al modulo specificato ha la precedenza.

  • Ambito. Un modulo rientra nell'ambito dell'intero spazio dei nomi.

    L'ambito di ogni membro del modulo è l'intero modulo. Si noti che tutti i membri vengono sottoposti a promozione tipo, che causa la promozione dell'ambito allo spazio dei nomi contenente il modulo. Per altre informazioni, vedere Promozione tipo.

  • Qualificazione. È possibile avere più moduli in un progetto ed è possibile dichiarare membri con lo stesso nome in due o più moduli. Tuttavia, è necessario qualificare qualsiasi riferimento a tale membro con il nome del modulo appropriato se il riferimento proviene dall'esterno di tale modulo. Per altre informazioni, vedere References to Declared Elements.

Esempio

Public Module thisModule
    Sub Main()
        Dim userName As String = InputBox("What is your name?")
        MsgBox("User name is " & userName)
    End Sub
    ' Insert variable, property, procedure, and event declarations.
End Module

Vedi anche