Namespace-AnweisungNamespace Statement

Der Name eines Namespace deklariert und bewirkt, dass den Quellcode, der die Deklaration innerhalb dieses Namespace kompiliert werden.Declares the name of a namespace and causes the source code that follows the declaration to be compiled within that namespace.

SyntaxSyntax

Namespace [Global.] { name | name.name }  
    [ componenttypes ]  
End Namespace  

TeileParts

GlobalGlobal
Dies ist optional.Optional. Können Sie einen Namespace aus dem Stammnamespace des Projekts definieren.Allows you to define a namespace out of the root namespace of your project. Finden Sie unter Namespaces in Visual Basic.See Namespaces in Visual Basic.

name
Erforderlich.Required. Ein eindeutiger Name, der den Namespace identifiziert.A unique name that identifies the namespace. Ein gültiger Visual Basic-Bezeichner muss sein.Must be a valid Visual Basic identifier. Weitere Informationen finden Sie unter Declared Element Names.For more information, see Declared Element Names.

componenttypes
Dies ist optional.Optional. Elemente, die den Namespace bilden.Elements that make up the namespace. Diese umfassen, aber Sie sind nicht begrenzt, Enumerationen, Strukturen, Schnittstellen, Klassen, Module, Delegaten und andere Namespaces.These include, but are not limited to, enumerations, structures, interfaces, classes, modules, delegates, and other namespaces.

End Namespace
Beendet eine Namespace Block.Terminates a Namespace block.

HinweiseRemarks

Namespaces werden als Organisation System verwendet.Namespaces are used as an organizational system. Sie bieten eine Möglichkeit zum Klassifizieren und präsentieren Programmierelemente, die in anderen Programmen und Anwendungen verfügbar gemacht werden.They provide a way to classify and present programming elements that are exposed to other programs and applications. Beachten Sie, dass ein Namespace keine Typ in dem Sinne, dass eine Klasse oder Struktur ist – ein Programmierelement, haben den Datentyp eines Namespace kann nicht deklariert werden.Note that a namespace is not a type in the sense that a class or structure is—you cannot declare a programming element to have the data type of a namespace.

Alle Programmierelemente, die danach deklariert eine Namespace Anweisung gehören zu diesem Namespace.All programming elements declared after a Namespace statement belong to that namespace. Visual Basic wird fortgesetzt, kompiliert Sie Elemente in den letzten deklarierten Namespace, bis er entweder trifft eine End Namespace -Anweisung oder einer anderen Namespace Anweisung.Visual Basic continues to compile elements into the last declared namespace until it encounters either an End Namespace statement or another Namespace statement.

Wenn ein Namespace bereits, auch außerhalb des Projekts definiert ist, können Sie Programmierelemente, hinzufügen.If a namespace is already defined, even outside your project, you can add programming elements to it. Zu diesem Zweck verwenden Sie eine Namespace Anweisung, damit Visual Basic Elemente in diesem Namespace kompiliert.To do this, you use a Namespace statement to direct Visual Basic to compile elements into that namespace.

Sie können eine Namespace Anweisung nur auf die Datei oder der Namespace-Ebene.You can use a Namespace statement only at the file or namespace level. Dies bedeutet, dass die Deklarationskontext für ein Namespace, eine Quelldatei oder einem anderen Namespace sein muss, und eine Klasse, Struktur, Modul, Schnittstelle oder Prozedur nicht möglich.This means the declaration context for a namespace must be a source file or another namespace, and cannot be a class, structure, module, interface, or procedure. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.For more information, see Declaration Contexts and Default Access Levels.

Sie können einen Namespace in einer anderen deklarieren.You can declare one namespace within another. Es gibt keine strenge Begrenzung der Schachtelungsebenen deklarieren, aber denken Sie daran, dass wenn anderer Code die Elemente in der innersten Namespace deklariert zugreift, muss ein Qualifizierungspfad verwendet werden, die die Namespacenamen in der Schachtelungshierarchie enthält.There is no strict limit to the levels of nesting you can declare, but remember that when other code accesses the elements declared in the innermost namespace, it must use a qualification string that contains all the namespace names in the nesting hierarchy.

ZugriffsebeneAccess Level

Namespaces werden behandelt, als hätten sie eine Public Zugriffsebene.Namespaces are treated as if they have a Public access level. Ein Namespace kann zugegriffen werden, von Code an einer beliebigen Stelle im selben Projekt, aus anderen Projekten, die auf das Projekt zu verweisen und einer Assembly, die aus dem Projekt erstellt.A namespace can be accessed from code anywhere in the same project, from other projects that reference the project, and from any assembly built from the project.

Programmierelemente, die auf Namespace-Ebene, d. h. in einem Namespace, jedoch nicht in ein anderes Element deklariert haben Public oder Friend Zugriff.Programming elements declared at namespace level, meaning in a namespace but not inside any other element, can have Public or Friend access. Falls nicht angegeben, verwendet die Zugriffsebene wie ein Element Friend standardmäßig.If unspecified, the access level of such an element uses Friend by default. Elemente, die Sie auf Namespaceebene deklarieren enthalten Klassen, Strukturen, Module, Schnittstellen, Enumerationen und Delegaten.Elements you can declare at namespace level include classes, structures, modules, interfaces, enumerations, and delegates. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.For more information, see Declaration Contexts and Default Access Levels.

Stamm-NamespaceRoot Namespace

Alle Namespacenamen in Ihrem Projekt basieren auf einer Stammnamespace.All namespace names in your project are based on a root namespace. Visual Studio weist den Projektnamen als den Standard-Stammnamespace für den gesamten Code des Projekts zu.Visual Studio assigns your project name as the default root namespace for all code in your project. Wenn Ihr Projekt beispielsweise den Namen Payroll hat, gehören die Programmierelemente zum Namespace Payroll.For example, if your project is named Payroll, its programming elements belong to namespace Payroll. Wenn Sie deklarieren Namespace funding, ist der vollständige Name dieses Namespace Payroll.funding.If you declare Namespace funding, the full name of that namespace is Payroll.funding.

Wenn Sie einen vorhandenen Namespace im angeben möchten einer Namespace -Anweisung, wie im Beispiel für die generische Liste, Sie Ihre Stamm-Namespace mit einem Nullwert festlegen können.If you want to specify an existing namespace in a Namespace statement, such as in the generic list class example, you can set your root namespace to a null value. Zu diesem Zweck klicken Sie auf Projekteigenschaften aus der Projekt Menü und deaktivieren Sie dann die Stammnamespace Eintrag so, dass das Feld leer ist.To do this, click Project Properties from the Project menu and then clear the Root namespace entry so that the box is empty. Visual Basic-Compiler würde dauern, wenn Sie dies im Beispiel für die generische Liste nicht, System.Collections.Generic als im Projekt einen neuen Namespace Payroll, durch den vollständigen Namen des Payroll.System.Collections.Generic.If you did not do this in the generic list class example, the Visual Basic compiler would take System.Collections.Generic as a new namespace within project Payroll, with the full name of Payroll.System.Collections.Generic.

Alternativ können Sie die Global Schlüsselwort zum Verweisen auf Elemente des Namespaces, die außerhalb des Projekts definiert.Alternatively, you can use the Global keyword to refer to elements of namespaces defined outside your project. Auf diese Weise können Sie den Projektnamen als den Stammnamespace beibehalten.Doing so lets you retain your project name as the root namespace. Dies reduziert die Wahrscheinlichkeit, dass versehentlich von Programmierelementen zusammen, mit denen des vorhandenen Namespaces zusammengeführt.This reduces the chance of unintentionally merging your programming elements together with those of existing namespaces. Weitere Informationen finden Sie im Abschnitt "Global-Schlüsselwort in vollständig qualifizierten Namen" in -Namespaces in Visual Basic.For more information, see the "Global Keyword in Fully Qualified Names" section in Namespaces in Visual Basic.

Die Global -Schlüsselwort kann auch in einer Namespace-Anweisung verwendet werden.The Global keyword can also be used in a Namespace statement. Dadurch können Sie einen Namespace aus dem Stammnamespace des Projekts definieren.This lets you define a namespace out of the root namespace of your project. Weitere Informationen finden Sie im Abschnitt "Global-Schlüsselwort in Namespace-Anweisungen in -Namespaces in Visual Basic.For more information, see the "Global Keyword in Namespace Statements" section in Namespaces in Visual Basic.

Problembehandlung bei.Troubleshooting. Der Stammnamespace kann zu unerwarteten Verkettungen von Namespace-Namen führen.The root namespace can lead to unexpected concatenations of namespace names. Wenn Sie den Verweis auf die Namespaces, die außerhalb des Projekts definiert vornehmen, können sie Visual Basic-Compiler als geschachtelte Namespaces im Stammnamespace construe.If you make reference to namespaces defined outside your project, the Visual Basic compiler can construe them as nested namespaces in the root namespace. In diesem Fall erkennt der Compiler keine Typen, die bereits in den externen Namespaces definiert wurden.In such a case, the compiler does not recognize any types that have been already defined in the external namespaces. Um dies zu vermeiden, legen Ihre Stamm-Namespace mit einem Nullwert wie beschrieben in "Namespace" Root ", oder Verwenden der Global Schlüsselwort, um Zugriff auf Elemente von externen Namespaces.To avoid this, either set your root namespace to a null value as described in "Root Namespace," or use the Global keyword to access elements of external namespaces.

Attribute und ModifiziererAttributes and Modifiers

Sie können keine Attribute auf einen Namespace anwenden.You cannot apply attributes to a namespace. Ein Attribut fügt Informationen an den Metadaten der Assembly, die hat keine Bedeutung für die Quelle von Klassifizierern wie z. B. Namespaces.An attribute contributes information to the assembly's metadata, which is not meaningful for source classifiers such as namespaces.

Zugriff oder Prozedurmodifizierer oder andere Modifizierer kann nicht mit einem Namespace angewendet werden.You cannot apply any access or procedure modifiers, or any other modifiers, to a namespace. Da es sich nicht um einen Typ handelt, sind diese Modifizierer ohne Bedeutung.Because it is not a type, these modifiers are not meaningful.

BeispielExample

Das folgende Beispiel deklariert zwei in einer anderen geschachtelten Namespaces.The following example declares two namespaces, one nested in the other.

Namespace n1
    Namespace n2
        Class a
            ' Insert class definition.
        End Class
    End Namespace
End Namespace

BeispielExample

Das folgende Beispiel deklariert mehrere geschachtelte Namespaces in einer einzelnen Zeile, und dies entspricht dem vorherigen Beispiel.The following example declares multiple nested namespaces on a single line, and it is equivalent to the previous example.

Namespace n1.n2
    Class a
        ' Insert class definition.
    End Class
End Namespace

BeispielExample

Das folgende Beispiel greift auf die Klasse definiert, die in den vorherigen Beispielen.The following example accesses the class defined in the previous examples.

Dim instance As New n1.n2.a

BeispielExample

Im folgenden Beispiel wird das Skelett einer neuen generischen List-Klasse definiert und fügt es der System.Collections.Generic Namespace.The following example defines the skeleton of a new generic list class and adds it to the System.Collections.Generic namespace.

Namespace System.Collections.Generic  
    Class specialSortedList(Of T)  
        Inherits List(Of T)  
        ' Insert code to define the special generic list class.  
    End Class  
End Namespace  

Siehe auchSee Also

Imports-Anweisung (.NET-Namespace und -Typ)Imports Statement (.NET Namespace and Type)
Namen deklarierter ElementeDeclared Element Names
Namespaces in Visual BasicNamespaces in Visual Basic