using-Anweisung (C#-Referenz)using Directive (C# Reference)

Die using-Direktive hat drei Verwendungszwecke:The using directive has three uses:

  • Sie ermöglicht die Verwendung von Typen in einem Namespace, sodass Sie die Verwendung eines Typs in diesem Namespace nicht qualifizieren müssen:To allow the use of types in a namespace so that you do not have to qualify the use of a type in that namespace:

    using System.Text;  
    
  • Ermöglicht den Zugriff auf statische Member eines geschachtelten Typs, ohne den Zugriff mit dem Typnamen zu qualifizieren.To allow you to access static members and nested types of a type without having to qualify the access with the type name.

    using static System.Math;  
    

    Weitere Informationen finden Sie unter using static-Direktive (C#-Referenz).For more information, see the using static directive.

  • Erstellen eines Alias für einen Namespace oder Typ.To create an alias for a namespace or a type. Dies wird als using-Aliasdirektive bezeichnet.This is called a using alias directive.

    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.The using keyword is also used to create using statements, which help ensure that IDisposable objects such as files and fonts are handled correctly. Weitere Informationen finden Sie unter using-Anweisung.See using Statement for more information.

Verwenden statischer TypenUsing Static Type

Sie können auf statische Member eines Typs zugreifen, ohne den Zugriff mit dem Typnamen zu qualifizieren:You can access static members of a type without having to qualify the access with the type name:

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

HinweiseRemarks

Der Bereich einer using-Direktive ist auf die Datei beschränkt, in der er enthalten ist.The scope of a using directive is limited to the file in which it appears.

Die using-Direktive kann an folgenden Stellen erscheinen:The using directive can appear:

  • Am Anfang einer Quellcodedatei, vor Namespace- oder Typdefinitionen.At the beginning of a source code file, before any namespace or type definitions.
  • In einem beliebigen Namespace, jedoch vor in diesem Namespace deklarierten Namespaces oder Typen.In any namespace, but before any namespace or types declared in this namespace.

Andernfalls wird der Compilerfehler CS1529 generiert.Otherwise, compiler error CS1529 is generated.

Erstellen Sie eine using-Alias-Direktive, um das Qualifizieren eines Bezeichners in einen Namespace oder Typ zu vereinfachen.Create a using alias directive to make it easier to qualify an identifier to a namespace or type. In jeder using-Direktive muss der vollqualifizierte Namespace oder Typ unabhängig von den davor aufgeführten using-Direktiven verwendet werden.In any using directive, the fully-qualified namespace or type must be used regardless of the using directives that come before it. In der Deklaration einer using-Direktive kann kein using-Alias verwendet werden.No using alias can be used in the declaration of a using directive. Der folgende Code verursacht beispielsweise einen Compilerfehler:For example, the following generates a compiler error:

using s = System.Text;
using s.RegularExpressions; 

Erstellen Sie eine using-Direktive, um die Typen in einem Namespace zu verwenden, ohne den Namespace angeben zu müssen.Create a using directive to use the types in a namespace without having to specify the namespace. Eine using-Direktive ermöglicht Ihnen nicht den Zugriff auf Namespaces, die im angegebenen Namespace geschachtelt sind.A using directive does not give you access to any namespaces that are nested in the namespace you specify.

Gibt zwei Kategorien von Namespaces: benutzerdefinierte und systemdefinierte Namespaces.Namespaces come in two categories: user-defined and system-defined. Benutzerdefinierte Namespaces sind Namespaces, die im Code definiert sind.User-defined namespaces are namespaces defined in your code. Eine Liste der systemdefinierten Namespaces finden Sie unter .NET API-Browser.For a list of the system-defined namespaces, see .NET API Browser.

Beispiele für das Verweisen auf Methoden in anderen Assemblys finden Sie unter Erstellen und Verwenden von Assemblys über die Befehlszeile.For examples on referencing methods in other assemblies, see Create and Use Assemblies Using the Command Line.

Beispiel 1Example 1

Das folgende Beispiel zeigt, wie Sie einen using-Alias für einen Namespace definieren und verwenden:The following example shows how to define and use a using alias for a namespace:

namespace PC
{
    // Define an alias for the nested namespace.
    using Project = PC.MyCompany.Project;
    class A
    {
        void M()
        {
            // Use the alias
            Project.MyClass 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.A using alias directive cannot have an open generic type on the right hand side. Sie können zum Beispiel keinen using-Alias für „List<T>“ erstellen, jedoch für „List<int>“.For example, you cannot create a using alias for a List<T>, but you can create one for a List<int>.

Beispiel 2Example 2

Das folgende Beispiel zeigt, wie Sie eine using-Direktive und einen using-Alias für eine Klasse definieren:The following example shows how to define a using directive and a using alias for a class:

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
{
    // Using directive:
    using NameSpace1;
    // Using directive:
    using NameSpace2;

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

            UsingAlias instance2 = new UsingAlias();
            Console.WriteLine(instance2);

        }
    }
}
// Output: 
//    You are in NameSpace1.MyClass.
//    You are in NameSpace2.MyClass.

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation.For more information, see the C# Language Specification. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.The language specification is the definitive source for C# syntax and usage.

Siehe auchSee Also