using-Anweisung (C#-Referenz)

Die using-Direktive hat drei Verwendungszwecke:

  • Sie ermöglicht die Verwendung von Typen in einem Namespace, sodass Sie die Verwendung eines Typs in diesem Namespace nicht qualifizieren müssen:

    using System.Text;
    
  • Ermöglicht den Zugriff auf statische Member eines geschachtelten Typs, ohne den Zugriff mit dem Typnamen zu qualifizieren.

    using static System.Math;
    

    Weitere Informationen finden Sie unter using static-Direktive (C#-Referenz).

  • Erstellen eines Alias für einen Namespace oder Typ. Dies wird als using-Aliasdirektive bezeichnet.

    using Project = PC.MyCompany.Project;
    

Das using-Schlüsselwort wird auch zum Erstellen von using-Anweisungen verwendet, mit denen sichergestellt wird, dass IDisposable-Objekte wie Dateien und Schriftarten richtig verarbeitet werden. Weitere Informationen finden Sie unter using-Anweisung.

Verwenden statischer Typen

Sie können auf statische Member eines Typs zugreifen, ohne den Zugriff mit dem Typnamen zu qualifizieren:

using static System.Console;
using static System.Math;
class Program
{
    static void Main()
    {
        WriteLine(Sqrt(3*3 + 4*4));
    }
}

Bemerkungen

Der Bereich einer using-Direktive ist auf die Datei beschränkt, in der er enthalten ist.

Die using-Direktive kann an folgenden Stellen erscheinen:

  • Am Anfang einer Quellcodedatei, vor Namespace- oder Typdefinitionen.
  • In einem beliebigen Namespace, jedoch vor in diesem Namespace deklarierten Namespaces oder Typen.

Andernfalls wird der Compilerfehler CS1529 generiert.

Erstellen Sie eine using-Alias-Direktive, um das Qualifizieren eines Bezeichners in einen Namespace oder Typ zu vereinfachen. In jeder using-Direktive muss der vollqualifizierte Namespace oder Typ unabhängig von den davor aufgeführten using-Direktiven verwendet werden. In der Deklaration einer using-Direktive kann kein using-Alias verwendet werden. Der folgende Code verursacht beispielsweise einen Compilerfehler:

using s = System.Text;
using s.RegularExpressions; // Generates a compiler error.

Erstellen Sie eine using-Direktive, um die Typen in einem Namespace zu verwenden, ohne den Namespace angeben zu müssen. Eine using-Direktive ermöglicht Ihnen nicht den Zugriff auf Namespaces, die im angegebenen Namespace geschachtelt sind.

Gibt zwei Kategorien von Namespaces: benutzerdefinierte und systemdefinierte Namespaces. Benutzerdefinierte Namespaces sind Namespaces, die im Code definiert sind. Eine Liste der systemdefinierten Namespaces finden Sie unter .NET API-Browser.

Beispiel 1

Das folgende Beispiel zeigt, wie Sie einen using-Alias für einen Namespace definieren und verwenden:

namespace PC
{
    // Define an alias for the nested namespace.
    using Project = PC.MyCompany.Project;
    class A
    {
        void M()
        {
            // Use the alias
            var mc = new Project.MyClass();
        }
    }
    namespace MyCompany
    {
        namespace Project
        {
            public class MyClass { }
        }
    }
}

Eine using-Aliasanweisung kann auf der rechten Seite nicht über einen offenen generischen Typen verfügen. Sie können zum Beispiel keinen using-Alias für List<T> erstellen, jedoch für List<int>.

Beispiel 2

Das folgende Beispiel zeigt, wie Sie eine using-Direktive und einen using-Alias für eine Klasse definieren:

using System;

// Using alias directive for a class.
using AliasToMyClass = NameSpace1.MyClass;

// Using alias directive for a generic class.
using UsingAlias = NameSpace2.MyClass<int>;

namespace NameSpace1
{
    public class MyClass
    {
        public override string ToString()
        {
            return "You are in NameSpace1.MyClass.";
        }
    }
}

namespace NameSpace2
{
    class MyClass<T>
    {
        public override string ToString()
        {
            return "You are in NameSpace2.MyClass.";
        }
    }
}

namespace NameSpace3
{
    class MainClass
    {
        static void Main()
        {
            var instance1 = new AliasToMyClass();
            Console.WriteLine(instance1);

            var instance2 = new UsingAlias();
            Console.WriteLine(instance2);
        }
    }
}
// Output:
//    You are in NameSpace1.MyClass.
//    You are in NameSpace2.MyClass.

C#-Sprachspezifikation

Weitere Informationen finden Sie unter using-Direktiven in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch