Istruzione Namespace
Aggiornamento: novembre 2007
Consente di dichiarare il nome di uno spazio dei nomi e provoca la compilazione del codice sorgente che segue la dichiarazione all'interno di tale spazio dei nomi.
Namespace { name | name.name }
[ componenttypes ]
End Namespace
Parti
name
Obbligatorio. Nome univoco che identifica lo spazio dei nomi. È necessario che sia un identificativo valido di Visual Basic. Per ulteriori informazioni, vedere Nomi di elementi dichiarati.componenttypes
Facoltativo. Elementi che compongono lo spazio dei nomi. Tra gli elementi sono inclusi anche enumerazioni, strutture, interfacce, classi, moduli, delegati e altri spazi dei nomi.End Namespace
Consente di terminare un blocco Namespace.
Note
Gli spazi dei nomi vengono utilizzati come sistema organizzativo in quanto forniscono un metodo di classificazione e presentazione degli elementi di programmazione esposti ad altri programmi e applicazioni. Si noti che uno spazio dei nomi non è un tipo nello stesso senso di una classe o struttura. Non è possibile dichiarare che un elemento di programmazione abbia il tipo di dati di uno spazio dei nomi.
L'istruzione Namespace può essere utilizzata solo a livello del file o dello spazio dei nomi. Il altri termini, il contesto della dichiarazione per uno spazio dei nomi deve essere costituito di un file di origine o uno spazio dei nomi e non può essere una classe, una struttura, un modulo, un'interfaccia o una routine. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefinito.
Gli spazi dei nomi vengono considerati come se avessero un livello di accesso Public. È possibile accedere a uno spazio dei nomi dal codice in un punto qualsiasi nello stesso progetto, da altri progetti che fanno riferimento al progetto e da qualsiasi assembly creato dal progetto.
Regole
Attributi. Non è possibile applicare gli attributi a uno spazio dei nomi. Un attributo fornisce informazioni ai metadati dell'assembly, che non è significativo per i classificatori di origine come gli spazi dei nomi.
Modificatori. Non è possibile applicare modificatori di accesso o di routine o qualsiasi altro modificatore a uno spazio dei nomi. Poiché non si tratta di un tipo, questi modificatori non sono significativi.
Nidificazione. È possibile dichiarare uno spazio dei nomi all'interno di un altro. Non esiste un limite rigoroso ai livelli di nidificazione che è possibile dichiarare. Tenere presente comunque che quando altro codice accede agli elementi dichiarati nello spazio dei nomi più interno, è necessario utilizzare una stringa di qualificazione contenente tutti i nomi degli spazi dei nomi della gerarchia di nidificazione.
Comportamento
Livello di accesso. Gli elementi di programmazione dichiarati a livello dello spazio dei nomi, vale a dire in uno spazio dei nomi ma non all'interno di altri elementi, possono essere dotati di un accesso Public o Friend. Se non viene specificato, il livello di accesso di tale elemento utilizza Friend per impostazione predefinita. Tra gli elementi che è possibile dichiarare a livello dello spazio dei nomi sono compresi classi, strutture, moduli, interfacce, enumerazioni e delegati. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefinito.
Compilazione. Tutti gli elementi di programmazione dichiarati dopo un'istruzione Namespace appartengono a quello spazio dei nomi. Gli elementi continuano ad essere compilati nello spazio dei nomi dichiarato per ultimo fino a quando non viene rilevata un'istruzione End Namespace o un'altra istruzione Namespace.
Aggiunta a uno spazio dei nomi. Se uno spazio dei nomi è già definito, anche all'esterno del progetto, è possibile aggiungere elementi di programmazione. A questo scopo, utilizzare un'istruzione Namespace per indirizzare Visual Basic nella compilazione dei seguenti elementi in uno spazio dei nomi.
Nell'esempio seguente viene definito lo scheletro di una nuova classe elenco e viene aggiunta questa classe 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
Spazio dei nomi di primo livello. Tutti i nomi dello spazio dei nomi del progetto sono basati su uno spazio dei nomi di primo livello. In Visual Studio il nome del progetto viene assegnato come spazio dei nomi di primo livello predefinito per tutto il codice all'interno del progetto. Se il progetto è denominato Payroll ad esempio, i relativi elementi di programmazione apparterranno allo spazio dei nomi Payroll. Se si dichiara Namespace funding, il nome completo di quello spazio dei nomi sarà Payroll.funding.
Se si desidera specificare uno spazio dei nomi esistente in un'istruzione Namespace, come nell'esempio della classe elenco generica, è possibile impostare lo spazio dei nomi di primo livello su un valore null. A questo scopo, scegliere Proprietà progetto dal menu Progetto, quindi eliminare il contenuto della voce Spazio dei nomi di primo livello in modo che la casella risulti vuota. Se non si è eseguita questa operazione nell'esempio della classe elenco generica, System.Collections.Generic verrebbe considerato come nuovo spazio dei nomi all'interno del progetto Payroll, con il nome completo di Payroll.System.Collections.Generic.
In alternativa, è possibile utilizzare 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 di primo livello. In questo modo si riduce la possibilità di unire in modo non intenzionale gli elementi di programmazione a quelli degli spazi dei nomi esistenti.
Risoluzione dei problemi
- Tipi indefiniti. Lo spazio dei nomi di primo livello può condurre a concatenazioni impreviste di nomi degli spazi dei nomi. Se si fa riferimento agli spazi dei nomi definiti all'esterno del progetto, il compilatore di Visual Basic può interpretarli come spazi dei nomi nidificati nello spazio dei nomi di primo livello. In casi di questo tipo, il compilatore non riconosce i tipi che sono già stati definiti negli spazi dei nomi esterni. Per evitare questo problema, impostare lo spazio dei nomi di primo livello su un valore null, secondo la descrizione fornita nella sezione "Spazio dei nomi di primo livello" oppure utilizzare la parola chiave Global per accedere agli elementi degli spazi dei nomi esterni.
Esempio
Nell'esempio illustrato di seguito vengono dichiarati due spazi dei nomi, uno nidificato nell'altro.
Namespace n1
Namespace n2
Class a
' Insert class definition.
End Class
End Namespace
End Namespace
Nell'esempio illustrato di seguito vengono dichiarati più spazi dei nomi nidificati in un'unica riga in modo equivalente all'esempio precedente.
Namespace n1.n2
Class a
' Insert class definition.
End Class
End Namespace
Nell'esempio illustrato di seguito si accede alla classe definita negli esempi precedenti.
Dim instance As New n1.n2.a
Vedere anche
Concetti
Spazi dei nomi in Visual Basic