Cómo: Utilizar el alias del espacio de nombres global (Guía de programación de C#)
Es útil poder tener acceso a un miembro en el espacio de nombres global cuando otra entidad con el mismo nombre puede ocultar el miembro.
Por ejemplo, en el siguiente código, Console tiene como resultado TestApp.Console en lugar del tipo Console del espacio de nombres System.
using System;
class TestApp
{
// Define a new class called 'System' to cause problems.
public class System { }
// Define a constant called 'Console' to cause more problems.
const int Console = 7;
const int number = 66;
static void Main()
{
// The following line causes an error. It accesses TestApp.Console,
// which is a constant.
//Console.WriteLine(number);
}
}
La utilización de System.Console aún produce un error porque la clase TestApp.System oculta el espacio de nombres System:
// The following line causes an error. It accesses TestApp.System,
// which does not have a Console.WriteLine method.
System.Console.WriteLine(number);
Sin embargo, este error se puede evitar utilizando global::System.Console, del modo siguiente:
// OK
global::System.Console.WriteLine(number);
Cuando el identificador izquierdo es global, la búsqueda del identificador derecho se inicia en el espacio de nombres global. Por ejemplo, la siguiente declaración hace referencia a TestApp como miembro del espacio global.
class TestClass : global::TestApp
Obviamente, no se recomienda la creación de espacios de nombres propios denominados System y es improbable que se encuentre algún código en el que se haya hecho esto. Sin embargo, en proyectos grandes, es muy posible que se pueda producir la duplicación del espacio de nombres en un formulario u otro. En estas situaciones, el calificador de espacio de nombres global es la garantía de que se puede especificar el espacio de nombres raíz.
Ejemplo
En este ejemplo, se utiliza el espacio de nombres System para incluir la clase TestClass; por lo tanto, se debe utilizar global::System.Console para hacer referencia a la clase System.Console, que el espacio de nombres System oculta. Además, el alias colAlias se utiliza para hacer referencia al espacio de nombres System.Collections; por consiguiente, la instancia de un objeto Hashtable se crea con este alias en lugar del espacio de nombres.
using colAlias = System.Collections;
namespace System
{
class TestClass
{
static void Main()
{
// Searching the alias:
colAlias::Hashtable test = new colAlias::Hashtable();
// Add items to the table.
test.Add("A", "1");
test.Add("B", "2");
test.Add("C", "3");
foreach (string name in test.Keys)
{
// Searching the global namespace:
global::System.Console.WriteLine(name + " " + test[name]);
}
}
}
}
Vea también
Referencia
Espacios de nombres (Guía de programación de C#)
:: (operador) (Referencia de C#)