Como: usar o Alias de Namespace Global (guia de programação C#)
A capacidade de acessar um membro no global espaço para nome é útil quando o membro pode estar oculto por outra entidade de mesmo nome.
Por exemplo, no código a seguir, Console resolve para TestApp.Console ao invés da Console digite o System espaço para nome.
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);
}
}
Usando System.Console ainda resulta em erro, porque o System namespace está oculta pela classe TestApp.System:
// The following line causes an error. It accesses TestApp.System,
// which does not have a Console.WriteLine method.
System.Console.WriteLine(number);
No entanto, você pode contornar esse erro, usando global::System.Console, como este:
// OK
global::System.Console.WriteLine(number);
Quando o identificador esquerdo está global, a pesquisa para o identificador direito começa no namespace global.Por exemplo, a declaração a seguir faz referência ao TestApp como um membro do espaço global.
class TestClass : global::TestApp
Obviamente, a criação de seus próprios espaços para nome chamado System não é recomendada, e é improvável que você encontre qualquer código em que isso aconteceu.No entanto, em projetos maiores, é uma possibilidade bastante real que o namespace duplicação pode ocorrer em um formato ou outro.Nessas situações, o qualificador de namespace global é a sua garantia de que você pode especificar o namespace raiz.
Exemplo
Neste exemplo, o namespace System é usada para incluir a classe TestClass , portanto, global::System.Console deve ser usado para referência a System.Console classe, que está oculta pela System namespace.Além disso, o alias colAlias é usado para fazer referência ao namespace System.Collections; Portanto, a instância de um System.Collections.Hashtable foi criado com o uso desse alias em vez do namespace.
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]);
}
}
}
}
Consulte também
Referência
Espaços para nome (guia de programação do C#)
:: Operador (referência de C#)