Freigeben über


Namespace-Anweisung

Deklariert den Namen eines Namespaces und bewirkt, dass der Quellcode, der auf die Deklaration folgt, in diesem Namespace kompiliert wird.

Syntax

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

Bestandteile

Global Optional. Ermöglicht es Ihnen, einen Namespace aus dem Stammnamespace Ihres Projekts zu definieren. Siehe Namespaces in Visual Basic.

name Erforderlich. Ein eindeutiger Name, der den Namespace identifiziert. Muss ein gültiger Visual Basic-Bezeichner sein. Weitere Informationen finden Sie unter "Deklarierte Elementnamen".

componenttypes Wahlfrei. Elemente, aus denen der Namespace besteht. Dazu gehören unter anderem Enumerationen, Strukturen, Schnittstellen, Klassen, Module, Delegaten und andere Namespaces.

End Namespace Beendet einen Namespace Block.

Bemerkungen

Namespaces werden als Organisationssystem verwendet. Sie bieten eine Möglichkeit, Programmierelemente zu klassifizieren und darzustellen, die anderen Programmen und Anwendungen zur Verfügung stehen. Beachten Sie, dass ein Namespace kein Typ im Sinne einer Klasse oder Struktur ist – Sie können kein Programmierelement deklarieren, um den Datentyp eines Namespaces zu haben.

Alle Programmierelemente, die nach einer Namespace Anweisung deklariert wurden, gehören zu diesem Namespace. Visual Basic kompiliert Weiterhin Elemente in den letzten deklarierten Namespace, bis sie auf eine End Namespace Anweisung oder eine andere Namespace Anweisung trifft.

Wenn bereits ein Namespace definiert ist, auch außerhalb Ihres Projekts, können Sie ihr Programmierelemente hinzufügen. Dazu verwenden Sie eine Namespace Anweisung, um Visual Basic zum Kompilieren von Elementen in diesen Namespace zu leiten.

Sie können eine Namespace Anweisung nur auf Datei- oder Namespaceebene verwenden. Dies bedeutet, dass der Deklarationskontext für einen Namespace eine Quelldatei oder ein anderer Namespace sein muss und keine Klasse, Struktur, Modul, Schnittstelle oder Prozedur sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.

Sie können einen Namespace innerhalb eines anderen deklarieren. Es gibt keine strikte Beschränkung auf die Ebenen der Schachtelung, die Sie deklarieren können, aber denken Sie daran, dass beim Zugriff anderer Code auf die im innersten Namespace deklarierten Elemente eine Qualifizierungszeichenfolge verwendet werden muss, die alle Namespacenamen in der Schachtelungshierarchie enthält.

Zugriffsebene

Namespaces werden so behandelt, als hätten sie eine Public Zugriffsebene. Auf einen Namespace kann von Code überall im selben Projekt aus zugegriffen werden, von anderen Projekten, die auf das Projekt verweisen, und von jeder Assembly, die aus dem Projekt erstellt wurde.

Programmierelemente, die auf Namespaceebene deklariert sind, d. h. in einem Namespace, aber nicht innerhalb eines anderen Elements, können oder PublicFriend darauf zugreifen. Wenn nicht angegeben, wird standardmäßig die Zugriffsebene eines solchen Elements verwendet Friend . Elemente, die Sie auf Namespaceebene deklarieren können, umfassen Klassen, Strukturen, Module, Schnittstellen, Enumerationen und Delegaten. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.

Stammnamespace

Alle Namespacenamen in Ihrem Projekt basieren auf einem Stammnamespace. Visual Studio weist Den Projektnamen als Standardstammnamespace für den gesamten Code in Ihrem Projekt zu. Wenn Ihr Projekt beispielsweise benannt Payrollist, gehören die Programmierelemente zum Namespace Payroll. Wenn Sie deklarieren Namespace funding, lautet Payroll.fundingder vollständige Name dieses Namespaces .

Wenn Sie einen vorhandenen Namespace in einer Namespace Anweisung angeben möchten, z. B. im generischen Listenklassenbeispiel, können Sie den Stammnamespace auf einen Nullwert festlegen. Klicken Sie dazu im Menü "Projekt" auf "Projekteigenschaften", und deaktivieren Sie dann den Stammnamespaceeintrag, damit das Feld leer ist. Wenn Sie dies nicht im generischen Listenklassenbeispiel getan haben, würde der Visual Basic-Compiler als neuer Namespace innerhalb des Projekts Payrollmit System.Collections.Generic dem vollständigen Namen von Payroll.System.Collections.Generic.

Alternativ können Sie das Global Schlüsselwort verwenden, um auf Elemente von Namespaces zu verweisen, die außerhalb Ihres Projekts definiert sind. Auf diese Weise können Sie den Projektnamen als Stammnamespace beibehalten. Dies reduziert die Wahrscheinlichkeit, dass Ihre Programmierelemente unbeabsichtigt mit denen vorhandener Namespaces zusammengeführt werden. Weitere Informationen finden Sie im Abschnitt "Globales Schlüsselwort in vollqualifizierten Namen" in Namespaces in Visual Basic.

Das Global Schlüsselwort kann auch in einer Namespace-Anweisung verwendet werden. Auf diese Weise können Sie einen Namespace aus dem Stammnamespace Ihres Projekts definieren. Weitere Informationen finden Sie im Abschnitt "Globales Schlüsselwort in Namespaceanweisungen" in Namespaces in Visual Basic.

Troubleshooting. Der Stammnamespace kann zu unerwarteten Verkettungen von Namespacenamen führen. Wenn Sie auf namespaces verweisen, die außerhalb Ihres Projekts definiert sind, kann der Visual Basic-Compiler sie als geschachtelte Namespaces im Stammnamespace interpretieren. In diesem Fall erkennt der Compiler keine Typen, die bereits in den externen Namespaces definiert wurden. Um dies zu vermeiden, legen Sie entweder Ihren Stammnamespace auf einen Nullwert fest, wie in "Stammnamespace" beschrieben, oder verwenden Sie das Global Schlüsselwort für den Zugriff auf Elemente externer Namespaces.

Attribute und Modifizierer

Attribute können nicht auf einen Namespace angewendet werden. Ein Attribut trägt Informationen zu den Metadaten der Assembly bei, was für Quellklassifizierer wie Namespaces nicht aussagekräftig ist.

Sie können keine Zugriffs- oder Prozedurmodifizierer oder andere Modifizierer auf einen Namespace anwenden. Da es sich nicht um einen Typ handelt, sind diese Modifizierer nicht sinnvoll.

Beispiel 1

Im folgenden Beispiel werden zwei Namespaces deklariert, die in der anderen geschachtelt sind.

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

Beispiel 2

Im folgenden Beispiel werden mehrere geschachtelte Namespaces in einer einzelnen Zeile deklariert, und sie entspricht dem vorherigen Beispiel.

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

Beispiel 3

Im folgenden Beispiel wird auf die in den vorherigen Beispielen definierte Klasse zugegriffen.

Dim instance As New n1.n2.a

Beispiel 4

Im folgenden Beispiel wird das Skelett einer neuen generischen Listenklasse definiert und dem System.Collections.Generic Namespace hinzugefügt.

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 auch