?id=1b29ce4b-dc1e-4e8a-9c6c-4f5d1770f05d
Cualificadores globales para espacios de nombres en C# 2.0
por José M. Alarcón
Cuando hacemos referencia a una clase o un tipo desde nuestro código podemos emplear una ruta completa de espacios de nombres para llegar hasta él. Por ejemplo, si escribimos System.Console.ReadLine(); se busca la clase Console dentro del espacio de nombres System que está en la raíz de todos los espacios de nombres (es decir, System se encuentra en la parte más alta de la jerarquía de espacios nombres junto a otros como Cryptography, etc... y los que nosotros mismos definamos o agreguemos a un proyecto).
¿Qué pasa sin embargo si escribimos esa misma línea dentro de una clase que está contenida dentro de un espacio de nombres llamado también System?, por ejemplo:
namespace MiEmpresa.MiBiblioteca
{
namespace System
{
class MiClase
{
System.Console.ReadLine();
}
}
}
El resultado será que la búsqueda de la clase Console comienza en el espacio de nombres actual y sólo cuando se recorra y no aparezca (porque pudiera aparecer si la hemos definido nosotros) se buscará desde el raíz que es el que verdaderamente nos interesaba.
En C# 2.0 se puede evitar esto con el nuevo cualificador que sirve para indicar la raíz y que se denota mediante el operador "::", es decir, dos símbolos de dos puntos seguidos. Así en el ejemplo, bastará con escribir:
::System.Console.ReadLine();
para que se busque desde la raíz directamente.
Cuiroso ¿verdad?
José Manuel Alarcón Aguín
Fundador de
campusMVP.es, el
proyecto de referencia en formación on-line para programadores en lengua española.
Autor de varios libros y cientos de artículos. Galardonado como
MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la
tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.