Compartir a través de


Espacios de nombres en Visual Basic

Actualización: noviembre 2007

Los espacios de nombres organizan los objetos definidos en un ensamblado. Un ensamblado puede contener varios espacios de nombres; éstos, a su vez, pueden contener otros espacios de nombres. Los espacios de nombres evitan las ambigüedades y simplifican las referencias cuando se utilizan grupos grandes de objetos, como bibliotecas de clases.

Por ejemplo, .NET Framework define la clase ListBox en el espacio de nombres System.Windows.Forms. El fragmento de código siguiente muestra cómo se puede declarar una variable utilizando el nombre completo de esta clase:

Dim LBox As System.Windows.Forms.ListBox

Evitar los conflictos de nombres

Los espacios de nombres de .NET Framework resuelven un problema que a veces se denomina contaminación de espacios de nombres y que hace referencia a los obstáculos con los que tropieza el desarrollador de una biblioteca de clases debido al uso de nombres similares en otra biblioteca. Estos conflictos con componentes existentes a veces se denominan conflictos de nombres.

Por ejemplo, si crea una nueva clase denominada ListBox, podrá utilizarla en el propio proyecto sin necesidad de calificación. No obstante, si desea usar la clase ListBox de .NET Framework en el mismo proyecto, deberá usar una referencia completa para que sea única. Si la referencia no es única, Visual Basic genera un error que indica que el nombre es ambiguo. En el ejemplo de código siguiente se muestra cómo declarar objetos de este tipo:

' 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

La siguiente ilustración muestra dos jerarquías de espacios de nombres; ambas contienen un objeto denominado ListBox.

De forma predeterminada, todos los archivos ejecutables creados con Visual Basic contienen un espacio de nombres cuyo nombre es igual que el del proyecto. Por ejemplo, si se define un objeto en un proyecto denominado ListBoxProject, el archivo ejecutable, ListBoxProject.exe, contendrá un espacio de nombres denominado ListBoxProject.

Varios ensamblados pueden usar el mismo espacio de nombres. Visual Basic los trata como un solo conjunto de nombres. Por ejemplo, pueden definirse clases para un espacio de nombres denominado SomeNameSpace en un ensamblado denominado Assemb1, y definirse clases adicionales para el mismo espacio de nombres desde un ensamblado denominado Assemb2.

Nombres completos

Los nombres completos son referencias de objetos que llevan como prefijo el nombre del espacio de nombres en el que está definido el objeto. Si se crea una referencia a la clase (por medio del comando Agregar referencia del menú Proyecto) se pueden utilizar objetos definidos en otros proyectos y, después, utilizar el nombre completo del objeto en el código. En el fragmento de código siguiente se muestra cómo utilizar el nombre completo para un objeto del espacio de nombres de otro proyecto:

Dim LBC As New ListBoxProject.Form1.ListBox

Los nombres completos evitan los conflictos de nombres porque permiten al compilador determinar qué objeto se utiliza. No obstante, los nombres pueden llegar a ser largos y complicados. Para solucionar este problema, puede utilizar la instrucción Imports para definir un alias, es decir, un nombre abreviado que sustituya al nombre completo. Por ejemplo, en el código siguiente se crean alias para dos nombres completos y se utilizan para definir dos objetos.

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

Si utiliza la instrucción Imports sin un alias, puede utilizar todos los nombres del espacio de nombres sin calificación, a condición de que sean únicos en el proyecto. Si el proyecto contiene instrucciones Imports para espacios de nombres que contienen elementos con el mismo nombre, deberá usar nombres completos. Supongamos, por ejemplo, que el proyecto contiene estas instrucciones Imports:

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

Si intenta usar Class1 sin que su nombre sea completo, Visual Basic genera un error para indicar que el nombre de Class1 es ambiguo.

Instrucciones en el nivel de espacio de nombres

Dentro de un espacio de nombres pueden definirse elementos como los módulos, interfaces, clases, delegados, enumeraciones, estructuras y otros espacios de nombres. Los elementos no se pueden definir como propiedades, procedimientos, variables y eventos en el nivel de espacio de nombres. Estos elementos se deben declarar dentro de los contenedores como módulos, estructuras o clases.

Nota:

Si ha definido una jerarquía anidada de espacios de nombres, el código de esta jerarquía puede tener el acceso bloqueado a las clases de otros espacios de nombres con el mismo nombre. Por ejemplo, si define un espacio de nombres denominado System dentro de un espacio de nombres denominado SpecialSpace, los miembros del espacio de nombres System de .NET Framework no estarán accesibles a menos que asigne nombres completos a los miembros utilizando la palabra clave Global. Para obtener más información, vea Global.

Vea también

Tareas

Cómo: Crear y utilizar ensamblados

Conceptos

Ensamblados

Referencias y la instrucción Imports

Referencia

Global

Instrucción Imports (Tipo y espacio de nombres de .NET)

ListBox

System.Windows.Forms

Otros recursos

Cambios en el lenguaje para usuarios de Visual Basic 6.0