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 Payroll
tillhör dess programmeringselement namnområdet Payroll
. Om du deklarerar Namespace funding
är Payroll.funding
det 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å Projektegenskaper på projektmenyn 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