Cómo: Utilizar el calificador de alias del espacio de nombres (Guía de programación de C#)

Actualización: noviembre 2007

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()
    {
        // Error  Accesses TestApp.Console
        //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:

// Error  Accesses TestApp.System
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 System.Collections.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)
            {
                // Seaching the gloabal namespace:
                global::System.Console.WriteLine(name + " " + test[name]);
            }
        }
    }
}
A 1
B 2
C 3

Vea también

Conceptos

Guía de programación de C#

Referencia

Espacios de nombres (Guía de programación de C#)

Operador . (Referencia de C#)

Operador :: (Referencia de C#)

extern (Referencia de C#)