Para definir un espacio de
nombres se utiliza la siguiente sintaxis:
namespace
<nombreEspacio>
{
<tipos>
}
Los tipos que se definan en <tipos> pasarán a considerase pertenecientes al
espacio de nombres llamado <nombreEspacio>.
Como veremos más adelante, aparte de clases esto tipos pueden ser también
interfaces, estructuras, tipos enumerados y delegados. A continuación se
muestra un ejemplo en el que definimos una clase de nombre ClaseEjemplo perteneciente a un espacio de nombres
llamado EspacioEjemplo:
namespace EspacioEjemplo
{
class
ClaseEjemplo
{}
}
El verdadero nombre de una clase,
al que se denomina nombre completamente
calificado, es el nombre que le demos al declararla prefijado por la
concatenación de todos los espacios de nombres a los que pertenece ordenados
del más externo al más interno y seguido cada uno de ellos por un punto
(carácter .)
Por ejemplo, el verdadero nombre de la clase ClaseEjemplo
antes definida es EspacioEjemplo.ClaseEjemplo.
Si no definimos una clase dentro de una definición de espacio de nombres -como
se ha hecho en los ejemplos de temas previos- se considera que ésta pertenece
al denominado espacio de nombres global
y su nombre completamente calificado coincidirá con el nombre que le demos al
definirla..
Aparte de definiciones de tipo,
también es posible incluir como miembros de un espacio de nombres a otros
espacios de nombres. Es decir, como se muestra el siguiente ejemplo es posible
anidar espacios de nombres:
namespace EspacioEjemplo
{
namespace
EspacioEjemplo2
{
class
ClaseEjemplo
{}
}
}
Ahora ClaseEjemplo
tendrá EspacioEjemplo.EspacioEjemplo2.ClaseEjemplo
como nombre completamente calificado.
En realidad es posible compactar las definiciones de espacios de nombres
anidados usando esta sintaxis de calificación completa para dar el nombre del
espacio de nombres a definir. Es decir, el último ejemplo es equivalente a:
namespace
EspacioEjemplo.EspacioEjemplo2
{
class
ClaseEjemplo
{}
}
En ambos casos lo que se ha
definido es una clase llamada ClaseEjemplo
perteneciente al espacio de nombres llamado EspacioEjemplo2
que, a su vez, pertenece al espacio de nombres llamado EspacioEjemplo.