Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Jmenné prostory uspořádávají objekty definované v sestavení. Sestavení mohou obsahovat více oborů názvů, které mohou zase obsahovat další obory názvů. Jmenné prostory zabraňují nejednoznačnosti a zjednodušují odkazy při použití velkých skupin objektů, jako jsou knihovny tříd.
Například .NET Framework definuje ListBox třídu v System.Windows.Forms namespace. Následující fragment kódu ukazuje, jak deklarovat proměnnou pomocí plně kvalifikovaného názvu pro tuto třídu:
Dim LBox As System.Windows.Forms.ListBox
Předcházení kolizím názvů
Obory názvů rozhraní .NET Framework řeší problém, který se někdy označuje jako znečištění oboru názvů, ve kterém je vývojář knihovny tříd znemožněn použitím podobných názvů v jiné knihovně. Tyto konflikty s existujícími komponentami se někdy označují jako kolize názvů.
Pokud například vytvoříte novou třídu s názvem ListBox, můžete ji použít v rámci projektu bez kvalifikace. Pokud však chcete použít třídu .NET Framework ListBox ve stejném projektu, musíte použít plně kvalifikovaný odkaz, aby byl odkaz jedinečný. Pokud odkaz není jedinečný, Visual Basic vytvoří chybu s informací, že název je nejednoznač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 oborů názvů, v nichž je objekt s názvem ListBox:
Ve výchozím nastavení každý spustitelný soubor, který vytvoříte pomocí jazyka Visual Basic, obsahuje obor názvů se stejným názvem jako váš projekt. Pokud například definujete objekt v projektu s názvem ListBoxProject, spustitelný soubor ListBoxProject.exe obsahuje obor názvů s názvem ListBoxProject.
Více sestavení může používat stejný obor názvů. Visual Basic je považuje za jednu sadu názvů. Můžete například definovat třídy pro obor názvů volaný 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 objekty, které mají předponu názvu oboru názvů, ve kterém je objekt definován. Objekty definované v jiných projektech můžete použít, pokud vytvoříte odkaz na třídu (zvolením možnosti Přidat odkaz z nabídky Projekt ) a pak použijete plně kvalifikovaný název objektu v kódu. Následující fragment kódu ukazuje, jak použít plně kvalifikovaný název objektu z oboru názvů jiného projektu:
Dim LBC As New ListBoxProject.Form1.ListBox
Plně kvalifikované názvy zabraňují konfliktům pojmenování, protože umožňují kompilátoru určit, který objekt se používá. Nicméně samotné názvy mohou být dlouhé a těžkopádné. K tomu můžete použít Imports příkaz k definování aliasu – zkrácený název, který můžete použít místo plně kvalifikovaného názvu. Následující příklad kódu například vytvoří aliasy pro dva plně kvalifikované názvy a pomocí těchto aliasů definuje dva objekty.
Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox
Pokud použijete bez aliasu příkaz Imports, můžete použít všechny názvy v rámci daného oboru názvů bez kvalifikace, za předpokladu jejich jedinečnosti pro projekt. Pokud projekt obsahuje Imports příkazy pro obory názvů, které obsahují položky se stejným názvem, musíte tento název při použití plně kvalifikovat. Předpokládejme například, že váš 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é kvalifikace, Visual Basic způsobí chybu s informací, že název Class1 je nejednoznačný.
Příkazy na úrovni oboru názvů
V rámci oboru názvů můžete definovat položky, jako jsou moduly, rozhraní, třídy, delegáty, výčty, struktury a další obory názvů. Nelze definovat položky, jako jsou vlastnosti, procedury, proměnné a události na úrovni oboru názvů. Tyto položky musí být deklarovány v kontejnerech, jako jsou moduly, struktury nebo třídy.
Globální klíčové slovo v plně kvalifikovaných názvech
Pokud jste definovali vnořenou hierarchii oborů názvů, může být kód uvnitř této hierarchie blokovaný v přístupu k System oboru názvů rozhraní .NET Framework. Následující příklad znázorňuje hierarchii, ve které SpecialSpace.System obor 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 důsledku toho kompilátor jazyka Visual Basic nemůže úspěšně přeložit odkaz na System.Int32, protože SpecialSpace.System nedefinuje Int32. Klíčové slovo Global můžete použít k zahájení řetězu kvalifikací na nejvyšší úrovni knihovny tříd .NET Framework. To vám umožní zadat System obor názvů nebo jakýkoli jiný obor názvů v knihovně tříd. Následující příklad to ilustruje.
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, abyste získali přístup k jiným oborům názvů na kořenové úrovni, jako například Microsoft.VisualBasic, a jakémukoli oboru názvů přidruženému k vašemu projektu.
Globální klíčové slovo v deklaracích oboru názvů
Můžete také použít Global klíčové slovo v deklaraci oboru názvů. To umožňuje definovat obor názvů, který je nezávislý na kořenovém oboru názvů vašeho projektu.
Všechny obory názvů ve vašem projektu jsou založené na kořenovém oboru názvů vašeho projektu. 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 ConsoleApplication1, jeho programovací prvky patří do oboru názvů ConsoleApplication1. Pokud deklarujete Namespace Magnetosphere, odkazy na Magnetosphere v projektu budou mít přístup k ConsoleApplication1.Magnetosphere.
Následující příklady používají klíčové slovo Global k deklaraci oboru názvů mimo kořenový obor názvů projektu.
Namespace Global.Magnetosphere
End Namespace
Namespace Global
Namespace Magnetosphere
End Namespace
End Namespace
Ve vyjádření oboru názvů nelze Global vnořit do jiného oboru názvů.
Stránku aplikace, Návrhář projektu (Visual Basic) můžete použít k zobrazení a úpravě kořenového oboru názvů projektu. U nových projektů se jako výchozí název projektu nastaví kořenový obor názvů . Chcete-li, aby Global byl obor názvů nejvyšší úrovně, můžete vymazat položku Kořenový obor názvů, aby bylo pole prázdné. Vymazání kořenového oboru názvů odebere potřebu klíčového slova Global v deklaracích oborů názvů.
Namespace Pokud příkaz deklaruje název, který je také oborem názvů v rozhraní .NET Framework, stane se obor názvů rozhraní .NET Framework nedostupný, pokud Global se klíčové slovo nepoužívá v plně kvalifikovaném názvu. Pro zajištění přístupu k danému oboru názvů rozhraní .NET Framework bez použití klíčového slova Global, můžete do příkazu zahrnout klíčové slovo Global.
Klíčové slovo Global se v následujícím příkladu nachází v deklaraci oboru názvů System.Text.
Pokud klíčové slovo Global nebylo přítomno v deklaraci oboru názvů, k StringBuilder by se nelze dostat bez zadání Global.System.Text.StringBuilder. U projektu s názvem ConsoleApplication1 by odkazy na System.Text umožňovaly přístup k ConsoleApplication1.System.Text, pokud by se klíčové slovo Global nepoužilo.
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é
- ListBox
- System.Windows.Forms
- sestavení v rozhraní .NET
- Odkazy a příkaz import
-
Imports – příkaz (obor názvů a typ rozhraní .NET) - Psaní kódu v řešeních pro systém Office