Espacio de nombres distribuidos

    Si hacemos varias definiciones de un espacio de nombres en un mismo o diferentes ficheros y se compilan todas juntas, el compilador las fusionará en una sola definición cuyos miembros serán la concatenación de los de definición realizada. Por ejemplo:


namespace A   // (1)
{
 class B1 {}
}
namespace A    // (2)
{
 class B2 {}
}

    Una definición como la anterior es tratada por el compilador exactamente igual que:


namespace A
{
 class B1 {}
 class B2 {}
}

    Y lo mismo ocurriría si las definiciones marcadas como (1) y (2) se hubiesen hecho en ficheros separados que se compilasen conjuntamente.

    Hay que tener en cuenta que las sentencias using,  ya sean de importación de espacios de nombres o de definición de alias, no son consideradas miembros de los espacios de nombres y por tanto no participan en sus fusiones. Así, el siguiente código es inválido:


namespace A
{
 class ClaseA {}
}
namespace B
{          
 using A;
}
namespace B
{
 // using A;
 class Principal: ClaseA {}
}

    Este código no es correcto porque aunque se importa el espacio de nombres A al principio de una definición del espacio de nombres donde se ha definido Principal, no se importa en la misma definición donde se deriva Principal de A.ClaseA. Para que el código compilase habría que descomentar la línea comentada.

Espacio de nombres distribuidos
José Antonio González Seco

José Antonio es experto en tecnologias Microsoft. Imparte cursos y conferencias en congresos sobre C# y .NET en Universidades de toda España (Sevilla, Barcelona, San Sebastián, Valencia, Oviedo, etc.) en representación de grandes empresas como Microsoft.
Fecha de alta:02/10/2006
Última actualizacion:02/10/2006
Visitas totales:16113
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com