Sdílet prostřednictvím


Postupy: Použití aliasu globálního oboru názvů (Průvodce programováním v C#)

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 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ů (Průvodce programováním v C#)

. – operátor (Referenční dokumentace jazyka C#)

:: – operátor (Referenční dokumentace jazyka C#)

extern (Referenční dokumentace jazyka C#)

Koncepty

Průvodce programováním v C#