Gewusst wie: Verwenden des globalen Namespacealias (C#-Programmierhandbuch)How to: Use the Global Namespace Alias (C# Programming Guide)

Die Möglichkeit, auf einen Member im globalen Namespace zuzugreifen, ist nützlich, wenn der Member möglicherweise von einer anderen Entität mit dem gleichen Namen verdeckt wird.The ability to access a member in the global namespace is useful when the member might be hidden by another entity of the same name.

Im folgenden Code wird Console z.B. zu TestApp.Console statt zum Console-Typ im System-Namespace aufgelöst.For example, in the following code, Console resolves to TestApp.Console instead of to the Console type in the System namespace.

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);
    }
}

Wenn Sie System.Console verwenden, führt dies immer noch zu einem Fehler, da der System-Namespace von der TestApp.System-Klasse verborgen wird:Using System.Console still results in an error because the System namespace is hidden by the class TestApp.System:

// The following line causes an error. It accesses TestApp.System,
// which does not have a Console.WriteLine method.
System.Console.WriteLine(number);

Diesen Fehler können Sie jedoch umgehen, indem Sie global::System.Console folgendermaßen verwenden:However, you can work around this error by using global::System.Console, like this:

// OK
global::System.Console.WriteLine(number);

Wenn der linke Bezeichner global ist, beginnt die Suche nach dem richtigen Bezeichner im globalen Namespace.When the left identifier is global, the search for the right identifier starts at the global namespace. Die folgende Deklaration verweist z.B. auf TestApp als Member des globalen Spaces.For example, the following declaration is referencing TestApp as a member of the global space.

class TestClass : global::TestApp

Es wird natürlich nicht empfohlen, dass Sie Ihren eigenen Namespace mit dem Namen System erstellen, und es ist unwahrscheinlich, dass Sie Code finden, in dem dies der Fall ist.Obviously, creating your own namespaces called System is not recommended, and it is unlikely you will encounter any code in which this has happened. In größeren Projekte ist es jedoch mehr als möglich, dass Namespaceduplikate auf irgendeine Weise vorkommen.However, in larger projects, it is a very real possibility that namespace duplication may occur in one form or another. In derartigen Situationen ist der globale Namespacequalifizierer die Garantie für Sie, den Stammnamespace angeben zu können.In these situations, the global namespace qualifier is your guarantee that you can specify the root namespace.

BeispielExample

In diesem Beispiel wird der System-Namespace verwendet, um die TestClass-Klasse einzubeziehen, weshalb global::System.Console verwendet werden muss, um auf die System.Console-Klasse zu verweisen, die vom System-Namespace verborgen wird.In this example, the namespace System is used to include the class TestClass therefore, global::System.Console must be used to reference the System.Console class, which is hidden by the System namespace. Darüber hinaus wird der colAlias-Alias verwendet, um auf den System.Collections-Namespace zu verweisen. Deshalb wurde die Instanz einer System.Collections.Hashtable mit diesem Alias statt mit dem Namespace erstellt.Also, the alias colAlias is used to refer to the namespace System.Collections; therefore, the instance of a System.Collections.Hashtable was created using this alias instead of the 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]);
            }
        }
    }
}

A 1A 1
B 2B 2
C 3C 3

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
NamespacesNamespaces
. Operator. Operator
::-Operator:: Operator
externextern