Jak: použití globální obor názvů aliasu (C# Příručka programování)
Možnost přístupu členem globální oboru názvů je užitečné v případě, že člen může být skrytý jiný subjekt se stejným názvem.
Například v následujícím kódu Console převede na TestApp.Console namísto do Console zadejte System oboru názvů.
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);
}
}
Pomocí System.Console stále vede k chybě, protože System oboru názvů je skrytá pomocí třídy TestApp.System:
// The following line causes an error. It accesses TestApp.System,
// which does not have a Console.WriteLine method.
System.Console.WriteLine(number);
Však lze vyřešit chybu pomocí global::System.Console, tímto způsobem:
// OK
global::System.Console.WriteLine(number);
Při levém identifikátor je global, hledat vpravo identifikátor začíná globální obor názvů.Například odkazují následující prohlášení TestApp jako člen globálního prostoru.
class TestClass : global::TestApp
Samozřejmě, nazývá vytvoření vlastní jmenné prostory System se nedoporučuje, a je nepravděpodobné, že zaznamenáte jakýkoliv kód, ve kterém stalo se to.U větších projektů je však velmi reálná možnost, že může dojít ke zdvojení oboru názvů jednoho formuláře nebo jiného.V těchto situacích je globální obor názvů kvalifikátor vaše záruka, že můžete zadat kořenový obor názvů.
Příklad
Například obor názvů System lze zahrnout třídu TestClass proto global::System.Console musí být použit odkaz System.Console třídy, která je ve skryté System oboru názvů.Také alias colAlias se používá k odkazování na obor názvů System.Collections; proto instance System.Collections.Hashtable byla vytvořena pomocí aliasu namísto oboru názvů.
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]);
}
}
}
}
Viz také
Referenční dokumentace
Obory názvů (Příručka programování C#)