Namespace (Instrucción)
Declara el nombre de un espacio de nombres y hace que el código fuente que sigue a la declaración se compile dentro de ese espacio de nombres.
Sintaxis
Namespace [Global.] { name | name.name }
[ componenttypes ]
End Namespace
Partes
Opcional global. Permite definir un espacio de nombres fuera del espacio de nombres raíz del proyecto. Vea Espacios de nombres en Visual Basic.
name Obligatorio. Nombre único que identifica el espacio de nombres. Debe ser un identificador Visual Basic válido. Para obtener más información, vea Nombres de elementos declarados.
componenttypes Opcional. Elementos que son el espacio de nombres. Estas incluyen, entre otras, enumeraciones, estructuras, interfaces, clases, módulos, delegados y otros espacios de nombres.
End Namespace Finaliza un Namespace bloque.
Comentarios
Los espacios de nombres se usan como un sistema organizativo. Proporcionan una manera de clasificar y presentar elementos de programación que se exponen a otros programas y aplicaciones. Tenga en cuenta que un espacio de nombres no es un tipo en el sentido de que una clase o estructura es: no se puede declarar un elemento de programación para que tenga el tipo de datos de un espacio de nombres.
Todos los elementos de programación declarados después de una instrucción pertenecen a Namespace ese espacio de nombres. Visual Basic sigue compilando elementos en el último espacio de nombres declarado hasta que encuentra una End Namespace instrucción u otra Namespace instrucción.
Si ya se ha definido un espacio de nombres, incluso fuera del proyecto, puede agregarle elementos de programación. Para ello, use una instrucción para dirigir Visual Basic Namespace para compilar elementos en ese espacio de nombres.
Solo puede usar una instrucción Namespace en el nivel de archivo o espacio de nombres. Esto significa que el contexto de declaración de un espacio de nombres debe ser un archivo de origen u otro espacio de nombres, y no puede ser una clase, estructura, módulo, interfaz o procedimiento. Para obtener más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).
Puede declarar un espacio de nombres dentro de otro. No hay ningún límite estricto en los niveles de anidamiento que puede declarar, pero recuerde que cuando otro código accede a los elementos declarados en el espacio de nombres más interno, debe usar una cadena de calificación que contenga todos los nombres de espacio de nombres de la jerarquía de anidamiento.
Nivel de acceso
Los espacios de nombres se tratan como si tengan un Public nivel de acceso. Se puede acceder a un espacio de nombres desde el código en cualquier lugar del mismo proyecto, desde otros proyectos que hacen referencia al proyecto y desde cualquier ensamblado creado a partir del proyecto.
Los elementos de programación declarados en el nivel de espacio de nombres, lo que significa en un espacio de nombres pero no dentro de ningún otro elemento, pueden tener Public o Friend tener acceso. Si no se especifica, el nivel de acceso de este tipo de elemento usa Friend de forma predeterminada. Los elementos que puede declarar en el nivel de espacio de nombres incluyen clases, estructuras, módulos, interfaces, enumeraciones y delegados. Para obtener más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).
Espacio de nombres raíz
Todos los nombres de espacio de nombres del proyecto se basan en un espacio de nombres raíz. Visual Studio asigna el nombre del proyecto como el espacio de nombres raíz predeterminado para todo el código del proyecto. Por ejemplo, si el proyecto se llama Payroll, los respectivos elementos de programación pertenecerán al espacio de nombres Payroll. Si declara Namespace funding , el nombre completo de ese espacio de nombres es Payroll.funding .
Si desea especificar un espacio de nombres existente en una instrucción , como en el ejemplo de clase de lista genérica, puede establecer el espacio de nombres raíz Namespace en un valor NULL. Para ello, haga clic Project Propiedades en el menú Project y, a continuación, desactive la entrada Espacio de nombres raíz para que el cuadro esté vacío. Si no lo hizo en el ejemplo de clase de lista genérica, el compilador de Visual Basic tomaría como un nuevo espacio de nombres dentro del proyecto , con el System.Collections.Generic Payroll nombre completo de Payroll.System.Collections.Generic .
Como alternativa, puede usar la palabra Global clave para hacer referencia a elementos de espacios de nombres definidos fuera del proyecto. Esto le permite conservar el nombre del proyecto como espacio de nombres raíz. Esto reduce la posibilidad de combinar involuntarlamente los elementos de programación con los de los espacios de nombres existentes. Para obtener más información, vea la sección "Palabra clave global en nombres completos"en Espacios de nombres en Visual Basic .
La Global palabra clave también se puede usar en una instrucción Namespace. con lo que podrá definir un espacio de nombres fuera del espacio de nombres raíz del proyecto. Para obtener más información, vea la sección "Palabra clave global en instrucciones de espacio de nombres" en Espacios de nombres en Visual Basic.
Solución de problemas. El espacio de nombres raíz puede dar lugar a concatenaciones inesperadas de nombres de espacio de nombres. Si hace referencia a espacios de nombres definidos fuera del proyecto, el compilador de Visual Basic puede interpretarlos como espacios de nombres anidados en el espacio de nombres raíz. En tal caso, el compilador no reconoce ningún tipo que ya se haya definido en los espacios de nombres externos. Para evitarlo, establezca el espacio de nombres raíz en un valor NULL como se describe en "Espacio de nombres raíz", o use la palabra clave para tener acceso a elementos de espacios Global de nombres externos.
Atributos y modificadores
No se pueden aplicar atributos a un espacio de nombres. Un atributo aporta información a los metadatos del ensamblado, lo que no es significativo para los clasificadores de origen, como los espacios de nombres.
No puede aplicar ningún modificador de acceso o procedimiento, ni ningún otro modificador, a un espacio de nombres. Dado que no es un tipo, estos modificadores no son significativos.
Ejemplo 1
En el ejemplo siguiente se declaran dos espacios de nombres, uno anidado en el otro.
Namespace n1
Namespace n2
Class a
' Insert class definition.
End Class
End Namespace
End Namespace
Ejemplo 2
En el ejemplo siguiente se declaran varios espacios de nombres anidados en una sola línea y es equivalente al ejemplo anterior.
Namespace n1.n2
Class a
' Insert class definition.
End Class
End Namespace
Ejemplo 3
En el ejemplo siguiente se accede a la clase definida en los ejemplos anteriores.
Dim instance As New n1.n2.a
Ejemplo 4
En el ejemplo siguiente se define el esqueleto de una nueva clase de lista genérica y se agrega al espacio de System.Collections.Generic nombres .
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