Dela via


Namnområdesinstruktor

Deklarerar namnet på ett namnområde och gör att källkoden som följer deklarationen kompileras inom namnområdet.

Syntax

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

Delar

Globalt valfritt. Gör att du kan definiera ett namnområde från projektets rotnamnområde. Se Namnområden i Visual Basic.

name Krävs. Ett unikt namn som identifierar namnområdet. Måste vara en giltig Visual Basic-identifierare. Mer information finns i Namn på deklarerade element.

componenttypes Valfri. Element som utgör namnområdet. Dessa omfattar, men är inte begränsade till, uppräkningar, strukturer, gränssnitt, klasser, moduler, ombud och andra namnområden.

End Namespace Avslutar ett Namespace block.

Kommentarer

Namnområden används som ett organisationssystem. De ger ett sätt att klassificera och presentera programmeringselement som exponeras för andra program och program. Observera att ett namnområde inte är en typ i den mening som en klass eller struktur är– du kan inte deklarera ett programmeringselement för att ha datatypen för ett namnområde.

Alla programmeringselement som deklareras efter en Namespace instruktion tillhör det namnområdet. Visual Basic fortsätter att kompilera element till det senast deklarerade namnområdet tills det påträffar antingen en End Namespace instruktion eller en annan Namespace instruktion.

Om ett namnområde redan har definierats, även utanför projektet, kan du lägga till programmeringselement i det. För att göra detta använder du en Namespace -instruktion för att dirigera Visual Basic för att kompilera element till det namnområdet.

Du kan endast använda en Namespace instruktion på fil- eller namnområdesnivå. Det innebär att deklarationskontexten för ett namnområde måste vara en källfil eller ett annat namnområde och får inte vara en klass, struktur, modul, gränssnitt eller procedur. Mer information finns i Deklarationskontexter och standardåtkomstnivåer.

Du kan deklarera ett namnområde i ett annat. Det finns ingen strikt gräns för de kapslingsnivåer som du kan deklarera, men kom ihåg att när annan kod kommer åt elementen som deklareras i det innersta namnområdet måste den använda en kvalificeringssträng som innehåller alla namnområdesnamn i kapslingshierarkin.

Åtkomstnivå

Namnområden behandlas som om de har en Public åtkomstnivå. Ett namnområde kan nås från kod var som helst i samma projekt, från andra projekt som refererar till projektet och från alla sammansättningar som skapats från projektet.

Programmeringselement som deklareras på namnområdesnivå, vilket betyder i ett namnområde men inte i något annat element, kan ha Public eller Friend komma åt. Om det är ospecificerat används Friend åtkomstnivån för ett sådant element som standard. Element som du kan deklarera på namnområdesnivå är klasser, strukturer, moduler, gränssnitt, uppräkningar och ombud. Mer information finns i Deklarationskontexter och standardåtkomstnivåer.

Rotnamnområde

Alla namnområdesnamn i projektet baseras på ett rotnamnområde. Visual Studio tilldelar projektnamnet som standardrotnamnområde för all kod i projektet. Om projektet till exempel heter Payrolltillhör dess programmeringselement namnområdet Payroll. Om du deklarerar Namespace fundingär Payroll.fundingdet fullständiga namnet på namnområdet .

Om du vill ange ett befintligt namnområde i en Namespace -instruktion, till exempel i det allmänna listklassexemplet, kan du ange ett null-värde för rotnamnområdet. Om du vill göra det klickar du på Projektegenskaperprojektmenyn och avmarkerar sedan posten Rotnamnområde så att rutan är tom. Om du inte gjorde detta i exemplet med den generiska listklassen skulle Visual Basic-kompilatorn ta System.Collections.Generic som ett nytt namnområde i projektet Payroll, med det fullständiga namnet Payroll.System.Collections.Generic.

Du kan också använda nyckelordet Global för att referera till element i namnområden som definierats utanför projektet. På så sätt kan du behålla projektnamnet som rotnamnområde. Detta minskar risken för oavsiktlig sammanslagning av dina programmeringselement tillsammans med befintliga namnområden. Mer information finns i avsnittet "Globalt nyckelord i fullständigt kvalificerade namn" i Namnområden i Visual Basic.

Nyckelordet Global kan också användas i en namespace-instruktion. På så sätt kan du definiera ett namnområde från projektets rotnamnområde. Mer information finns i avsnittet "Globalt nyckelord i namnområdesinstruktioner" i Namnområden i Visual Basic.

Felsökning. Rotnamnområdet kan leda till oväntade sammanfogningar av namnområdesnamn. Om du refererar till namnområden som definierats utanför projektet kan Visual Basic-kompilatorn tolka dem som kapslade namnområden i rotnamnområdet. I sådana fall känner kompilatorn inte igen några typer som redan har definierats i de externa namnrymderna. För att undvika detta anger du antingen rotnamnområdet till ett null-värde enligt beskrivningen i "Rotnamnområde" eller använder nyckelordet för att komma åt element i Global externa namnområden.

Attribut och modifierare

Du kan inte tillämpa attribut på ett namnområde. Ett attribut bidrar med information till sammansättningens metadata, vilket inte är meningsfullt för källklassificerare, till exempel namnområden.

Du kan inte tillämpa någon åtkomst- eller procedurmodifierare, eller andra modifierare, på ett namnområde. Eftersom det inte är en typ är dessa modifierare inte meningsfulla.

Exempel 1

I följande exempel deklareras två namnområden, en kapslad i den andra.

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

Exempel 2

I följande exempel deklareras flera kapslade namnområden på en enda rad, och det motsvarar föregående exempel.

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

Exempel 3

I följande exempel får du åtkomst till klassen som definierats i föregående exempel.

Dim instance As New n1.n2.a

Exempel 4

I följande exempel definieras skelettet för en ny generisk listklass och läggs till i System.Collections.Generic namnområdet.

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

Se även