Obory názvů v aplikaci Visual Basic
Obory názvů uspořádat objekty definované v sestavení.Sestavení mohou obsahovat více oborů názvů, které zase mohou obsahovat jiné obory názvů.Obory názvů zabránit dvojznačnosti a zjednodušit odkazy při použití velké skupiny objektů, jako je například knihoven tříd.
Například .NET Framework definuje ListBox třídy v System.Windows.Forms oboru názvů.Následující fragment kódu ukazuje, jak deklarovat proměnnou pomocí plně kvalifikovaný název této třídy:
Dim LBox As System.Windows.Forms.ListBox
Zamezení kolize názvů
.NET Frameworkobory názvů řeší problém se někdy nazývá znečištění oboru názvů, ve které vývojář knihovna tříd je omezován podobné názvy do jiné knihovny.Tyto konflikty s existující součásti jsou někdy označovány jako Kolize názvů.
Například pokud vytvoříte novou třídu s názvem ListBox, můžete uvnitř projektu bez kvalifikace.Chcete-li použít .NET FrameworkListBox třídy ve stejném projektu nutné použít úplný odkaz vytvořit jedinečný odkaz. Pokud odkaz není jedinečný, Visual Basic vznikne chyba informující, že název je dvojznačný.Následující příklad kódu ukazuje, jak deklarovat tyto objekty:
' Define a new object based on your ListBox class.
Dim LBC As New ListBox
' Define a new Windows.Forms ListBox control.
Dim MyLB As New System.Windows.Forms.ListBox
Následující obrázek znázorňuje dvě hierarchie oboru názvů obou obsahující objekt s názvem ListBox.
Standardně každý spustitelný soubor vytvoříte s Visual Basic obsahuje obor názvů se stejným názvem jako projekt.Například definovat objekt v rámci projektu s názvem ListBoxProject, spustitelný soubor ListBoxProject.exe obsahuje obor názvů, nazývá ListBoxProject.
Více sestavení použít stejný obor názvů.Visual Basicpracuje s nimi jako s jedinou sadou názvy.Můžete například definovat třídy oboru názvů, nazývá SomeNameSpace v sestavení s názvem Assemb1a definovat další třídy pro stejný obor názvů ze sestavení s názvem Assemb2.
Plně kvalifikované názvy
Plně kvalifikované názvy jsou odkazy na objekt, které jsou předponu oboru názvů, ve kterém je objekt definovaný název.Pomocí objektů definovaných v jiných projektech, pokud vytvoříte odkaz na třídu (zvolením Přidat odkaz na z projektu nabídky) a pak použít úplný název objektu v kódu.Následující fragment kódu ukazuje, jak použít úplný název objektu z jiného projektu obor názvů:
Dim LBC As New ListBoxProject.Form1.ListBox
Plně kvalifikované názvy zabránit pojmenování konfliktu, protože jim umožňují kompilátor zjistit, který objekt je používán.Samotné názvy můžete získat však dlouhý a náročný.Chcete-li se tomuto problému vyhnout, můžete Imports příkaz definovat alias– zkrácený název, můžete použít namísto úplného názvu.Například následující příklad kódu vytvoří aliasy pro dva plně kvalifikované názvy a používá tyto aliasy definovat dva objekty.
Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox
Používáte-li Imports prohlášení bez aliasu, můžete použít všechny názvy v tomto oboru názvů bez kvalifikace, k dispozici jsou jedinečné pro projekt.Pokud projekt obsahuje Imports prohlášení pro obory názvů, které obsahují položky se stejným názvem, musíte plně před názvem při použití.Předpokládejme například projekt obsahoval následující dva Imports příkazy:
' This namespace contains a class called Class1.
Imports MyProj1
' This namespace also contains a class called Class1.
Imports MyProj2
Pokud se pokusíte použít Class1 bez plně kvalifikované, Visual Basic vytvoří název chyby oznamující Class1 je dvojznačný.
Příkazů na úrovni oboru názvů
V rámci oboru názvů lze definovat položky, jako například moduly, rozhraní, třídy, delegátů, vyčíslení, struktur a ostatní obory názvů.Nelze definovat položky, jako například vlastnosti, postupy, proměnné a události na úrovni oboru názvů.Tyto položky musí být deklarována v rámci kontejnerů jako moduly, struktury nebo třídy.
Globální klíčové slovo v plně kvalifikované názvy
Pokud jste definovali vnořené hierarchie oborů názvů, kód uvnitř hierarchie může být zablokován přístup k System oboru názvů.NET Framework.Následující příklad ukazuje hierarchii, ve které SpecialSpace.System oboru názvů blokuje přístup k System.
Namespace SpecialSpace
Namespace System
Class abc
Function getValue() As System.Int32
Dim n As System.Int32
Return n
End Function
End Class
End Namespace
End Namespace
Výsledkem kompilátoru Visual Basic nelze vyřešit úspěšně odkaz na System.Int32, protože SpecialSpace.System nedefinuje Int32.Můžete použít Global klíčové slovo start kvalifikace řetěz na vnější úrovni.NET Framework, knihovna tříd.Umožňuje určit System oboru názvů nebo jiného oboru názvů knihovny tříd.To ukazuje následující příklad.
Namespace SpecialSpace
Namespace System
Class abc
Function getValue() As Global.System.Int32
Dim n As Global.System.Int32
Return n
End Function
End Class
End Namespace
End Namespace
Můžete použít Global přístup k jiné obory názvů kořenové úrovni, například Microsoft.VisualBasica libovolný obor názvů, přidružené k projektu.
Globální klíčové slovo v oboru názvů příkazů
Můžete také použít Global klíčové slovo v Příkaz Namespace.To umožňuje definovat obor názvů z oboru názvů root projektu.
Všechny obory názvů v projektu jsou založeny na kořenový obor názvů pro projekt.Visual Studio přiřadí název vašeho projektu jako výchozí obor názvů root pro veškerý kód v projektu.Například projekt s názvem ConsoleApplication1, jeho programovací prvky patří do oboru názvů ConsoleApplication1.Pokud deklarujete Namespace Magnetosphere, odkazy na Magnetosphere v projektu bude přistupovat k ConsoleApplication1.Magnetosphere.
Následující příklady používají Global klíčové slovo deklarovat obor názvů z oboru názvů root projektu.
Namespace Global.Magnetosphere
End Namespace
Namespace Global
Namespace Magnetosphere
End Namespace
End Namespace
V deklarace oboru názvů Global nemůže být vnořen do jiného oboru názvů.
Můžete použít Stránce aplikace Project Designer (Visual Basic) zobrazit a upravit Kořenový obor názvů projektu.Pro nové projekty Kořenový obor názvů výchozí název projektu.Způsobit Global Chcete-li nejvyšší úrovně oboru názvů, zrušte Kořenový obor názvů položku tak, že je pole prázdné.Vymazání Kořenový obor názvů odstraňuje potřebu Global klíčové slovo v deklarace oboru názvů.
Pokud Namespace prohlášení deklaruje název, který je také v oboru názvů.NET Framework.NET Framework oboru názvů k dispozici Pokud Global klíčové slovo není použit v plně kvalifikovaný název.Povolení přístupu.NET Framework oboru názvů bez použití Global klíčové slovo, můžete zahrnout Global klíčové slovo v Namespace prohlášení.
V následujícím příkladu má Global klíčové slovo v System.Text deklarace oboru názvů.
Pokud Global klíčové slovo nebylo v deklarace oboru názvů StringBuilder nelze otevřít bez zadání Global.System.Text.StringBuilder.Pro projekt s názvem ConsoleApplication1, odkazy na System.Text by přístup k ConsoleApplication1.System.Text Pokud Global nebylo použito klíčové slovo.
Module Module1
Sub Main()
Dim encoding As New System.Text.TitanEncoding
' If the namespace defined below is System.Text
' instead of Global.System.Text, then this statement
' causes a compile-time error.
Dim sb As New System.Text.StringBuilder
End Sub
End Module
Namespace Global.System.Text
Class TitanEncoding
End Class
End Namespace
Viz také
Úkoly
Jak: vytvoření a použití sestavení pomocí příkazového řádku (C# a Visual Basic)
Referenční dokumentace
Importuje příkaz (.NET oboru názvů a typ)
Koncepty
Sestavení a globální mezipaměti sestavení (C# a Visual Basic)