Spazi dei nomi in Visual Basic

Aggiornamento: novembre 2007

Gli spazi dei nomi organizzano gli oggetti definiti in un assembly. Gli assembly possono contenere più spazi dei nomi, che a loro volta possono contenere altri spazi dei nomi. Gli spazi dei nomi evitano ambiguità e semplificano i riferimenti quando si utilizzano gruppi di oggetti di grandi dimensioni, come le librerie di classi.

.NET Framework, ad esempio, definisce la classe ListBox nello spazio dei nomi System.Windows.Forms. Nella porzione di codice che segue viene illustrato come dichiarare una variabile utilizzando il nome completo per questa classe:

Dim LBox As System.Windows.Forms.ListBox

Evitare conflitti di nomi

Gli spazi dei nomi di .NET Framework pongono un problema talvolta noto come inquinamento dello spazio dei nomi, nel quale lo sviluppatore di una libreria di classi è ostacolato dall'uso di nomi simili in un'altra libreria. Questi conflitti con i componenti esistenti sono talvolta denominati collisioni di nomi.

Se, ad esempio, si crea una nuova classe denominata ListBox, è possibile utilizzarla all'interno del progetto senza qualificazione. Tuttavia, se si desidera usare la classe ListBox di .NET Framework nello stesso progetto, è necessario utilizzare un riferimento completo per rendere unico il riferimento. Se il riferimento non è unico, Visual Basic creerà un errore che informa che il nome è ambiguo. Nel frammento di codice che segue viene illustrato come dichiarare questi oggetti.

' Define a new object based on your ListBox class.
Dim LBC As New ListBox
' Define a new Windows.Forms ListBox control.
Dim MyLB As New System.Windows.Forms.ListBox

Nell'illustrazione che segue vengono mostrate due gerarchie di spazi dei nomi, entrambi contenenti un oggetto denominato ListBox.

Gerarchia dello spazio dei nomi

Per impostazione predefinita, ogni file eseguibile creato con Visual Basic contiene uno spazio dei nomi con lo stesso nome del progetto. Se ad esempio si definisce un oggetto dentro un progetto denominato ListBoxProject, il file eseguibile ListBoxProject.exe conterrà uno spazio dei nomi chiamato ListBoxProject.

Lo stesso spazio dei nomi può essere utilizzato per più assembly. Visual Basic li considera come un gruppo singolo di nomi. È possibile ad esempio definire le classi per uno spazio dei nomi denominato SomeNameSpace in un assembly denominato Assemb1 e definire classi aggiuntive per lo stesso spazio dei nomi da un assembly denominato Assemb2.

Nomi completi

I nomi completi sono riferimenti agli oggetti precedute dal nome dello spazio dei nomi nel quale è definito l'oggetto. È possibile utilizzare gli oggetti definiti in altri progetti se si crea un riferimento alla classe (selezionando Aggiungi riferimento dal menu Progetto) e quindi utilizzare il nome completo per l'oggetto nel codice. Nella porzione di codice che segue viene illustrato come utilizzare il nome completo per un oggetto dallo spazio dei nomi di un altro progetto.

Dim LBC As New ListBoxProject.Form1.ListBox

I nomi completi impediscono i conflitti di denominazione in quanto rendono possibile al compilatore di determinare quale oggetto viene usato. I nomi stessi, tuttavia, possono diventare lunghi e complessi. Per evitare questo problema, è possibile utilizzare l'istruzione Imports per definire un alias, ovvero un nome abbreviato da utilizzare al posto di un nome completo. Ad esempio, l'esempio del codice seguente crea alias per due nomi completi e utilizza questi alias per definire due oggetti.

Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox

Se si utilizza l'istruzione Imports senza un alias, è possibile utilizzare tutti i nomi di quello spazio dei nomi senza qualifica, a condizione che siano unici per il progetto. Se il progetto contiene istruzioni Imports per gli spazi dei nomi che contengono elementi con lo stesso nome, è necessario definire il nome in modo completo quando lo si utilizza. Si supponga, ad esempio, che il progetto contenesse le due istruzioni Imports che seguono:

' This namespace contains a class called Class1.
Imports MyProj1
' This namespace also contains a class called Class1.
Imports MyProj2

Se si tenta di utilizzare Class1 senza qualificarlo completamente, Visual Basic produrrà un errore che afferma che il nome Class1 è ambiguo.

Istruzioni a livello di spazi dei nomi

All'interno di uno spazio dei nomi è possibile definire elementi, quali moduli, interfacce, classi, delegati, enumerazioni, strutture e altri spazi dei nomi. Non è possibile definire elementi come proprietà, procedure, variabili ed eventi a livello di spazio dei nomi. È necessario dichiarare questi elementi all'interno di contenitori quali moduli, strutture o classi.

Nota:

Se è stata definita una gerarchia nidificata di spazi dei nomi, è possibile che il codice all'interno della gerarchia non acceda alle classi di altri spazi dei nomi con lo stesso nome. Ad esempio, definendo uno spazio dei nomi denominato System all'interno di uno spazio dei nomi denominato SpecialSpace, i membri dello spazio dei nomi System di .NET Framework non saranno accessibili a meno che non si specifichino in modo completo i membri con la parola chiave Global. Per ulteriori informazioni, vedere Global.

Vedere anche

Attività

Procedura: creare e utilizzare gli assembly

Concetti

Assembly

Riferimenti e istruzione Imports

Riferimenti

Global

Istruzione Imports (tipo e spazio dei nomi .NET)

ListBox

System.Windows.Forms

Altre risorse

Modifiche al linguaggio per gli utenti di Visual Basic 6.0