Istruzione Namespace

Dichiara il nome di uno spazio dei nomi e fa in modo che il codice sorgente che segue la dichiarazione venga compilato all'interno di tale spazio dei nomi.

Sintassi

Namespace [Global.] { name | name.name }
    [ componenttypes ]
End Namespace

Parti

Global Optional. Consente di definire uno spazio dei nomi esterno allo spazio dei nomi radice del progetto. Vedere spazi dei nomi in Visual Basic.

name Obbligatorio. Nome univoco che identifica lo spazio dei nomi. Deve essere un identificatore di Visual Basic valido. Per altre informazioni, vedere Nomi di elementi dichiarati.

componenttypes Facoltativo. Elementi che costituiscono lo spazio dei nomi. Questi includono, ad esempio, enumerazioni, strutture, interfacce, classi, moduli, delegati e altri spazi dei nomi.

End Namespace Termina un blocco di Namespace.

Osservazioni:

Gli spazi dei nomi vengono usati come sistema aziendale. Forniscono un modo per classificare e presentare elementi di programmazione esposti ad altri programmi e applicazioni. Si noti che uno spazio dei nomi 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 uno spazio dei nomi.

Tutti gli elementi di programmazione dichiarati dopo che un'istruzione Namespace appartengono a tale spazio dei nomi. Visual Basic continua a compilare gli elementi nell'ultimo spazio dei nomi dichiarato fino a quando non rileva un'istruzione End Namespace o un'altra istruzione Namespace.

Se uno spazio dei nomi è già definito, anche all'esterno del progetto, è possibile aggiungervi elementi di programmazione. A tale scopo, usare un'istruzione Namespace per indirizzare Visual Basic alla compilazione di elementi in tale spazio dei nomi.

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

È possibile dichiarare uno spazio dei nomi all'interno di un altro. Non esiste alcun limite rigoroso ai livelli di annidamento che è possibile dichiarare, ma tenere presente che quando un altro codice accede agli elementi dichiarati nello spazio dei nomi più interno, deve usare una stringa di qualificazione che contiene tutti i nomi degli spazi dei nomi nella gerarchia di annidamento.

Livello di accesso

Gli spazi dei nomi vengono considerati come se avessero un livello di accesso Public. È possibile accedere a uno spazio dei nomi dal codice ovunque nello stesso progetto, da altri progetti che fanno riferimento al progetto e da qualsiasi assembly compilato dal progetto.

Gli elementi di programmazione dichiarati a livello di spazio dei nomi, ovvero in uno spazio dei nomi, ma non all'interno di altri elementi, possono avere accesso Public o Friend. Se non specificato, il livello di accesso di tale elemento usa Friend per impostazione predefinita. Gli elementi che è possibile dichiarare a livello di spazio dei nomi includono classi, strutture, moduli, interfacce, enumerazioni e delegati. Per altre informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti.

Spazio dei nomi radice

Tutti i nomi degli spazi dei nomi nel progetto sono basati su uno spazio dei nomi radice. Visual Studio assegna il nome del progetto come spazio dei nomi radice predefinito per tutto il codice del progetto. Se, ad esempio, il progetto è denominato Payroll, i relativi elementi di programmazione appartengono allo spazio dei nomi Payroll. Se si dichiara Namespace funding, il nome completo di tale spazio dei nomi è Payroll.funding.

Se si desidera specificare uno spazio dei nomi esistente in un'istruzione Namespace, ad esempio nell'esempio della classe elenco generica, è possibile impostare lo spazio dei nomi radice su un valore Null. A tale scopo, fare clic su Proprietà progetto dal menu Progetto e quindi deselezionare la voce Spazio dei nomi radice in modo che la casella sia vuota. Se questa operazione non è stata eseguita nell'esempio di classe elenco generico, il compilatore Visual Basic accetta System.Collections.Generic come nuovo spazio dei nomi all'interno del progetto Payroll, con il nome completo di Payroll.System.Collections.Generic.

In alternativa, è possibile usare la parola chiave Global per fare riferimento agli elementi degli spazi dei nomi definiti all'esterno del progetto. In questo modo è possibile mantenere il nome del progetto come spazio dei nomi radice. In questo modo si riduce la possibilità di unire involontariamente gli elementi di programmazione insieme a quelli degli spazi dei nomi esistenti. Per altre informazioni, vedere la sezione "Parola chiave globale nei nomi completi" in Spazi dei nomi in Visual Basic.

La parola chiave Global può essere usata anche in un'istruzione Namespace. Ciò consente di definire uno spazio dei nomi all'esterno dello spazio dei nomi radice del progetto. Per altre informazioni, vedere la sezione "Parola chiave globale nelle istruzioni dello spazio dei nomi" in spazi dei nomi in Visual Basic.

Risoluzione dei problemi. Lo spazio dei nomi radice può causare concatenazioni impreviste di nomi. Se si fa riferimento agli spazi dei nomi definiti all'esterno del progetto, il compilatore Visual Basic può definirli come spazi dei nomi annidati nello spazio dei nomi radice. In questo caso, il compilatore non riconosce alcun tipo già definito negli spazi dei nomi esterni. Per evitare questo problema, impostare lo spazio dei nomi radice su un valore Null come descritto in "Spazio dei nomi radice" o usare la parola chiave Global per accedere agli elementi degli spazi dei nomi esterni.

Attributi e modificatori

Non è possibile applicare attributi a uno spazio dei nomi. Un attributo contribuisce alle informazioni ai metadati dell'assembly, che non sono significativi per i classificatori di origine, ad esempio gli spazi dei nomi.

Non è possibile applicare modificatori di accesso o procedure o altri modificatori a uno spazio dei nomi. Poiché non è un tipo, questi modificatori non sono significativi.

Esempio 1

Nell'esempio seguente vengono dichiarati due spazi dei nomi, uno annidato nell'altro.

Namespace n1
    Namespace n2
        Class a
            ' Insert class definition.
        End Class
    End Namespace
End Namespace

Esempio 2

Nell'esempio seguente vengono dichiarati più spazi dei nomi annidati in una singola riga ed è equivalente all'esempio precedente.

Namespace n1.n2
    Class a
        ' Insert class definition.
    End Class
End Namespace

Esempio 3

Nell'esempio seguente viene eseguito l'accesso alla classe definita negli esempi precedenti.

Dim instance As New n1.n2.a

Esempio 4

L'esempio seguente definisce lo scheletro di una nuova classe elenco generica e lo aggiunge allo spazio dei nomi System.Collections.Generic.

Namespace System.Collections.Generic
    Class specialSortedList(Of T)
        Inherits List(Of T)
        ' Insert code to define the special generic list class.
    End Class
End Namespace

Vedi anche