Sdílet prostřednictvím


Odkazy na prvky deklarované (Visual Basic)

Pokud váš kód odkazuje na element deklarovaný Visual Basic kompilátor odpovídá názvu v odkaz na příslušné prohlášení tohoto názvu.Pokud se stejným názvem je deklarována více než jeden prvek, můžete řídit, kterým tyto prvky je odkazovat kvalifikační jeho název.

Kompilátor pokusí najít odkaz na prohlášení s názvem název zpomalit.To znamená spustí kód odkazu a pasivního funguje prostřednictvím po sobě následujících úrovní obsahující prvky.

Následující příklad zobrazuje odkazy na dvě proměnné se stejným názvem.Příklad deklaruje dvě proměnné, každý s názvem totalCount, na různých úrovních oboru v modulu container.Při postupu showCount zobrazí totalCount bez kvalifikace, Visual Basic kompilátor řeší odkaz na prohlášení s úzkým rozsahem totiž místní prohlášení uvnitř showCount.Pokud splní totalCount obsahující modul container, kompilátor řeší odkaz na prohlášení s širším rozsahem.

' Assume these two modules are both in the same assembly.
Module container
    Public totalCount As Integer = 1
    Public Sub showCount()
        Dim totalCount As Integer = 6000
        ' The following statement displays the local totalCount (6000).
        MsgBox("Unqualified totalCount is " & CStr(totalCount))
        ' The following statement displays the module's totalCount (1).
        MsgBox("container.totalCount is " & CStr(container.totalCount))
    End Sub
End Module
Module callingModule
    Public Sub displayCount()
        container.showCount()
        ' The following statement displays the containing module's totalCount (1).
        MsgBox("container.totalCount is " & CStr(container.totalCount))
    End Sub
End Module

Kvalifikační název prvku

Chcete-li přepsat tento proces hledání a určit název deklarované v širším rozsahu, musíte nárok název nadřazeného prvku širší rozsah.V některých případech také mít nárok obsahující prvek.

Kvalifikační název znamená předcházejících v příkazu zdroje s informacemi, který označuje, kde je cílový prvek definováno.Tyto informace se nazývá kvalifikace řetězec.Může obsahovat jeden nebo více oborů názvů a modul, třídy nebo struktury.

Řetězec kvalifikace by jednoznačně určit modul, třídy nebo struktury obsahující cílový prvek.Kontejner může zase umístěn ve jiného prvku, obvykle oboru názvů.Bude pravděpodobně nutné zahrnout několik prvků obsahující řetězec kvalifikace.

Přístup k element deklarovaný kvalifikováním názvu

  1. Určete umístění, ve které byl definován prvek.Může se jednat o obor názvů nebo dokonce hierarchie oborů názvů.Oboru názvů nejnižší úrovni prvku musí být součástí modulu, třídy nebo struktury.

    ' Assume the following hierarchy exists outside your code.
    Namespace outerSpace
        Namespace innerSpace
            Module holdsTotals
                Public Structure totals
                    Public thisTotal As Integer
                    Public Shared grandTotal As Long
                End Structure
            End Module
        End Namespace
    End Namespace
  2. Určete kvalifikace cestu založenou na prvek cílového umístění.Spustit s nejvyšší oboru názvů, pokračujte na nejnižší úrovni oboru názvů a končit modul, třídy nebo struktury obsahující cílový prvek.Každý prvek v cestě musí obsahovat prvek, který po něm následuje.

    outerSpace → innerSpace → holdsTotals → totals

  3. Cílový prvek připravte řetězec kvalifikace.Umístěte období (.) za každý prvek v cestě.Aplikace musí mít přístup do každého prvku v řetězci své kvalifikace.

    outerSpace.innerSpace.holdsTotals.totals.
  4. Zapsat výrazu nebo příkazu přiřazení odkazující na cílový prvek normálním způsobem.

    grandTotal = 9000
  5. Před název prvku target s řetězcem kvalifikace.Název by měl následovat bezprostředně po období (.), následuje modul, třídy nebo struktury, která obsahuje prvek.

    ' Assume the following module is part of your code.
    Module accessGrandTotal
        Public Sub setGrandTotal()
            outerSpace.innerSpace.holdsTotals.totals.grandTotal = 9000
        End Sub
    End Module
  6. Kompilátor používá k nalezení jasné a jednoznačné prohlášení, které najde odkaz cílový prvek řetězce kvalifikace.

Pravděpodobně také poskytnout odkaz na název aplikace má přístup k více než jedné programovací element, který má stejný název.Například System.Windows.Forms a System.Web.UI.WebControls obsahovat oba obory Label třídy (System.Windows.Forms.Label a System.Web.UI.WebControls.Label).Pokud aplikace používá obě nebo definuje vlastní Label třídy, musí rozlišovat různé Label objektů.Deklarace proměnné zahrňte aliasu oboru názvů nebo importovat.Následující příklad používá alias importu.

' The following statement must precede all your declarations.
Imports win = System.Windows.Forms, web = System.Web.UI.WebControls
' The following statement references the Windows.Forms.Label class.
Dim winLabel As New win.Label()

Členy jiné prvky obsahující

Při použití sdíleném členem jiné třídy nebo struktury, musí nejprve kvalifikovat název členu, proměnná nebo výraz, který odkazuje na instanci třídy nebo struktury.V následujícím příkladu demoClass je instancí třídy s názvem class1.

Dim demoClass As class1 = New class1()
demoClass.someSub[(argumentlist)]

Samotný název třídy nelze použít ke kvalifikaci člen, který není Sdílené (Visual Basic).Musíte nejprve vytvořit instanci v objektové proměnné (v tomto případě demoClass) a pak odkazovat podle názvu proměnné.

Pokud má třídy nebo struktury Shared člena, máte nárok tento člen s názvem třídy nebo struktury nebo proměnná nebo výraz, který odkazuje na instanci.

Modul nemá žádné samostatné instance a jejími členy jsou Shared ve výchozím nastavení.Proto nárok modul člen s názvem modulu.

Následující příklad ukazuje kvalifikované odkazy na postupy členských modulu.Příklad deklaruje dvě Sub postupy, oboje s názvem perform, v různých modulů v projektu.Každou z nich můžete zadat bez kvalifikace ve vlastním modulu, ale musí být kvalifikovanou Pokud odkaz z jiné místo.Protože poslední odkaz v module3 není způsobilá perform, kompilátor nemůže vyřešit tento odkaz.

' Assume these three modules are all in the same assembly.
Module module1
    Public Sub perform()
        MsgBox("module1.perform() now returning")
    End Sub
End Module
Module module2
    Public Sub perform()
        MsgBox("module2.perform() now returning")
    End Sub
    Public Sub doSomething()
        ' The following statement calls perform in module2, the active module.
        perform()
        ' The following statement calls perform in module1.
        module1.perform()
    End Sub
End Module
Module module3
    Public Sub callPerform()
        ' The following statement calls perform in module1.
        module1.perform()
        ' The following statement makes an unresolvable name reference
        ' and therefore generates a COMPILER ERROR.
        perform() ' INVALID statement
    End Sub
End Module

Odkazy na projekty

Použití Veřejné (Visual Basic) prvky definované v jiném projektu, musíte nejprve nastavit referenční do knihovny sestavení nebo typ daného projektu.Chcete-li nastavit odkaz, klepněte na tlačítko Přidat odkaz na na projektu nabídky nebo použití / Reference (Visual Basic) volba kompilátoru příkazového řádku.

Můžete například použít model objektu XML .NET Framework.Pokud nastavíte odkaz System.Xml oboru názvů, můžete deklarovat a používat všechny jeho třídy jako XmlDocument.Následující příklad používá XmlDocument.

' Assume this project has a reference to System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As System.Xml.XmlDocument

Import obsahující prvky

Můžete použít Importuje příkaz (.NET oboru názvů a typ) na import obory názvů, které obsahují moduly nebo třídy, které chcete použít.Umožňuje odkazovat na prvky definované v importované oboru názvů bez plně kvalifikované názvy.V následujícím příkladu přepíše předchozí příklad importovat System.Xml oboru názvů.

' Assume this project has a reference to System.Xml
' The following statement must precede all your declarations.
Imports System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As XmlDocument

Navíc Imports prohlášení lze definovat alias importu pro každou importovanou oboru názvů.Proto může být zdrojový kód kratší a snadněji číst.V následujícím příkladu přepíše předchozí příklad použití xD jako alias System.Xml oboru názvů.

' Assume this project has a reference to System.Xml
' The following statement must precede all your declarations.
Imports xD = System.Xml
' The following statement creates xDoc as an XML document object.
Dim xDoc As xD.XmlDocument

Imports Příkaz neprovede prvky z jiných projektů aplikace k dispozici.Nepřijme, místo nastavení odkaz.Obor importu pouze odstraní požadavek kvalifikovat názvy definované v tomto oboru názvů.

Můžete také použít Imports příkaz Importovat moduly, třídy, struktury a vyčíslení.Potom můžete členy takové prvky importovaných bez kvalifikace.Vždy však musí využívat sdíleném členy tříd a struktur, proměnná nebo výraz, jehož výsledkem instance třídy nebo struktury.

Pokyny pro pojmenování

Při definování dvou nebo více programovací prvky, které mají stejný název dvojznačnosti může být výsledkem kompilátor pokusí přeložit odkaz na tento název.Pokud více než jednu definici je v oboru, nebo pokud žádná definice v oboru, odkaz je irresolvable.Příklad naleznete na této stránce nápovědy "Kvalifikovaný Příklad odkazu".

Dvojznačnosti se můžete vyhnout tím, že všechny prvky jedinečné názvy.Poté můžete provést libovolný prvek referenční aniž kvalifikovat název oboru názvů, modulu nebo třídy.Také snížit šanci omylem odkazující na nesprávném prvku.

Stínový provoz

Když dvě programovací prvky sdílejí stejný název, můžete skrýt jeden z nich, nebo stín, jiný.Stínovaný prvek není k dispozici pro referenci; místo, když v kódu používá název prvku na stínovaný Visual Basic kompilátor je řeší stínového provozu prvku.Podrobnější vysvětlení s příklady viz Stínový provoz v jazyce Visual Basic.

Viz také

Úkoly

Jak: Upravte vlastnosti projektu a nastavení konfigurace

Referenční dokumentace

Importuje příkaz (.NET oboru názvů a typ)

Nový operátor (Visual Basic)

Veřejné (Visual Basic)

Koncepty

Deklarovaný názvy prvků (Visual Basic)

Vlastnosti deklarované prvku (Visual Basic)

Proměnné v jazyce Visual Basic