Namespace – příkaz

Deklaruje název oboru názvů a způsobí, že zdrojový kód, který následuje za deklarací, se zkompiluje v rámci tohoto oboru názvů.

Syntaxe

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

Součástky

Globální volitelné. Umožňuje definovat obor názvů mimo kořenový obor názvů projektu. Viz Obory názvů v jazyce Visual Basic.

name Požadované. Jedinečný název, který identifikuje obor názvů. Musí to být platný identifikátor jazyka Visual Basic. Další informace naleznete v tématu Deklarované názvy elementů.

componenttypes Volitelné. Prvky, které tvoří obor názvů Patří mezi ně, ale nejsou omezeny, výčty, struktury, rozhraní, třídy, moduly, delegáty a další obory názvů.

End Namespace Ukončí Namespace blok.

Poznámky

Obory názvů se používají jako organizační systém. Poskytují způsob, jak klasifikovat a prezentovat programovací prvky, které jsou vystaveny jiným programům a aplikacím. Všimněte si, že obor názvů není typem v tom smyslu, že třída nebo struktura je – nemůžete deklarovat programovací prvek, který má datový typ oboru názvů.

Všechny programovací prvky deklarované za Namespace příkazem patří do daného oboru názvů. Visual Basic nadále kompiluje elementy do posledního deklarovaného oboru názvů, dokud nenarazí End Namespace na příkaz nebo jiný Namespace příkaz.

Pokud je obor názvů již definovaný, i mimo projekt, můžete do něj přidat programovací prvky. K tomu použijete příkaz pro nasměrování jazyka Namespace Visual Basic ke kompilaci prvků do tohoto oboru názvů.

Příkaz můžete použít Namespace pouze na úrovni souboru nebo oboru názvů. To znamená, že kontext deklarace oboru názvů musí být zdrojový soubor nebo jiný obor názvů a nemůže být třída, struktura, modul, rozhraní nebo procedura. Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu.

Jeden obor názvů můžete deklarovat v rámci jiného oboru názvů. Na úrovně vnoření, které můžete deklarovat, neexistuje žádné přísné omezení, ale mějte na paměti, že pokud ostatní kódy přistupují k prvkům deklarovaným v nejvnitřnějším oboru názvů, musí použít řetězec kvalifikace, který obsahuje všechny názvy oborů názvů v hierarchii vnoření.

Úroveň přístupu

Obory názvů se považují za ty, které mají Public úroveň přístupu. Obor názvů je přístupný z kódu kdekoli ve stejném projektu, z jiných projektů, které na projekt odkazují, a z libovolného sestavení vytvořeného z projektu.

Programovací prvky deklarované na úrovni oboru názvů, což znamená v oboru názvů, ale ne uvnitř žádného jiného prvku, mohou mít nebo Friend přistupovatPublic. Pokud není zadáno, úroveň přístupu takového prvku se ve výchozím nastavení používá Friend . Prvky, které můžete deklarovat na úrovni oboru názvů, zahrnují třídy, struktury, moduly, rozhraní, výčty a delegáty. Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu.

Kořenový obor názvů

Všechny názvy oborů názvů v projektu jsou založené na kořenovém oboru názvů. Visual Studio přiřadí název projektu jako výchozí kořenový obor názvů pro veškerý kód v projektu. Pokud je projekt například pojmenován Payroll, jeho programovací prvky patří do oboru názvů Payroll. Pokud deklarujete Namespace funding, úplný název tohoto oboru názvů je Payroll.funding.

Pokud chcete v příkazu zadat existující obor názvů, například v příkladu obecné třídy seznamu, můžete kořenový obor Namespace názvů nastavit na hodnotu null. Uděláte to tak, že v nabídce Projekt kliknete na Vlastnosti projektu a potom vymažete položku kořenového oboru názvů, aby bylo pole prázdné. Pokud jste to neudělali v obecném příkladu třídy seznamu, kompilátor jazyka Visual Basic by se použil System.Collections.Generic jako nový obor názvů v rámci projektu Payroll, s úplným názvem Payroll.System.Collections.Generic.

Případně můžete pomocí klíčového Global slova odkazovat na prvky oborů názvů definovaných mimo váš projekt. To vám umožní zachovat název projektu jako kořenový obor názvů. Tím se sníží pravděpodobnost neúmyslného sloučení programovacích prvků společně s existujícími obory názvů. Další informace najdete v části Globální klíčové slovo v plně kvalifikovaných názvech v oborech názvů v jazyce Visual Basic.

Klíčové Global slovo lze použít také v příkazu Oboru názvů. Díky tomu můžete definovat obor názvů mimo kořenový obor názvů projektu. Další informace najdete v části Globální klíčové slovo v příkazech oboru názvů v názvech v jazyce Visual Basic.

Řešení potíží. Kořenový obor názvů může vést k neočekávaným zřetězení názvů názvů. Pokud odkazujete na obory názvů definované mimo váš projekt, kompilátor jazyka Visual Basic je může považovat za vnořené obory názvů v kořenovém oboru názvů. V takovém případě kompilátor nerozpozná žádné typy, které už byly definovány v externích oborech názvů. Abyste tomu předešli, nastavte kořenový obor názvů na hodnotu null, jak je popsáno v části Kořenový obor názvů, nebo použijte Global klíčové slovo pro přístup k prvkům externích oborů názvů.

Atributy a modifikátory

U oboru názvů nelze použít atributy. Atribut přispívá k informacím o metadatech sestavení, což není smysluplné pro zdrojové klasifikátory, jako jsou obory názvů.

U oboru názvů nelze použít žádné modifikátory přístupu ani procedury ani žádné jiné modifikátory. Protože to není typ, tyto modifikátory nejsou smysluplné.

Příklad 1

Následující příklad deklaruje dva obory názvů, jeden vnořený do druhého.

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

Příklad 2

Následující příklad deklaruje více vnořených oborů názvů na jednom řádku a je ekvivalentní předchozímu příkladu.

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

Příklad 3

Následující příklad přistupuje ke třídě definované v předchozích příkladech.

Dim instance As New n1.n2.a

Příklad 4

Následující příklad definuje kostru nové obecné třídy seznamu a přidá ji do System.Collections.Generic oboru názvů.

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

Viz také