Odwołania do elementów zadeklarowanych (Visual Basic)

Gdy kod odwołuje się do elementu zadeklarowanej, Visual Basic kompilatora zgodny z nazwą w odwołaniu, z odpowiednią deklarację o tej nazwie.Jeżeli zgłaszana jest więcej niż jeden element, o tej samej nazwie, można kontrolować, które z tych elementów ma odwoływać się dostosowywanego jego nazwę.

Kompilator próbuje odpowiada odwołaniu Nazwa deklaracji nazwy z najwęższy zakres.Oznacza to, rozpoczyna się od kodu odniesienia i na zewnątrz działa poprzez kolejne poziomy zawierające elementy.

Poniższy przykład pokazuje odniesienia do dwie zmienne o tej samej nazwie.Przykład deklaruje dwie zmienne, każdy o nazwie totalCount, na różnych poziomach zakresu w module container.Gdy procedura showCount Wyświetla totalCount bez kwalifikacji, Visual Basic kompilator usuwa odniesienie do deklaracji z najwęższy zakres, a mianowicie lokalnej deklaracja wewnątrz showCount.Kiedy kwalifikuje się totalCount z modułem zawierające container, kompilator usuwa odniesienie do deklaracji o szerszym zakresie.

' 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

Kwalifikujące się nazwę elementu

Jeśli chcesz zastąpić ten proces wyszukiwania i określ nazwę zadeklarowane w szerszym zakresie, należy kwalifikują się nazwy zawierające element szerszy zakres.W niektórych przypadkach może również mieć kwalifikują się zawierające element.

Kwalifikujące się oznacza nazwę, poprzedzające go w instrukcji źródła z informacje identyfikujące, gdzie zdefiniowana jest element docelowy.Te informacje jest nazywany ciąg kwalifikacji.Może on zawierać jedną lub więcej nazw i moduł klasy lub struktury.

Ciąg kwalifikacji powinny jednoznacznie określić moduł, klasy lub struktury zawierającej element docelowy.Pojemnik z kolei mogą znajdować się w innym elemencie zawierających zazwyczaj obszaru nazw.Może być konieczne jest uwzględnienie kilku elementów zawierających w ciągu kwalifikacji.

Dostęp do elementu zadeklarowanych za kwalifikujące się jego nazwa

  1. Należy określić lokalizację, w którym element został zdefiniowany.Może to obejmować obszar nazw lub nawet w hierarchii obszarów nazw.W obrębie obszaru nazw najniższy poziom elementu muszą być zawarte w module, klasy lub 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. Należy określić ścieżkę kwalifikacji, na podstawie lokalizacji elementu docelowego.Zaczynać najwyższego obszaru nazw, należy przejść do obszaru nazw najniższy poziom i kończyć moduł, klasy lub struktury zawierającej element docelowy.Każdy element w ścieżce musi zawierać element, do którego następuje.

    outerSpace → innerSpace → holdsTotals → totals

  3. Przygotować ciąg kwalifikacji dla elementu docelowego.Umieścić okres (.) po każdym elemencie w ścieżce.Aplikacja musi mieć dostęp do każdego elementu w ciągu kwalifikacji.

    outerSpace.innerSpace.holdsTotals.totals.
  4. Pisać wyrażenia lub instrukcji przypisania, odnoszące się do elementu docelowego w normalny sposób.

    grandTotal = 9000
  5. Należy poprzedzić nazwę elementu docelowego ciąg kwalifikacji.Nazwa powinna niezwłocznie po kropce (.) znajdujący się w module, klasy lub struktury, która zawiera element.

    ' 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. Kompilator używa ciągu kwalifikacji w celu wyszukania deklaracji, jednoznaczne, do którego można dopasować odwołanie elementu docelowego.

Masz może również kwalifikować się odwołanie do nazwy, jeśli aplikacja ma dostęp do więcej niż jeden element programowania, który ma taką samą nazwę.Na przykład System.Windows.Forms i System.Web.UI.WebControls zarówno nazw zawiera Label klasy (Label i Label).Jeśli aplikacja używa zarówno lub definiuje własnej Label klasy, musi zapewniać rozróżnienie różnych Label obiektów.Zawiera alias obszaru nazw lub przywóz w deklaracji zmiennej.W poniższym przykładzie użyto aliasu 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()

Członkowie innych elementów zawierających

Korzystając z nieudostępnionym członkiem innej klasy lub struktury, należy określić nazwę składnika, zmienna lub wyrażenie, które wskazuje na wystąpienie klasy lub struktury.W poniższym przykładzie demoClass jest instancją klasy o nazwie class1.

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

Sama nazwa klasy nie można użyć, aby kwalifikować się do członka, który nie jest Shared (Visual Basic).Należy najpierw utworzyć instancję w zmiennej obiektu (w tym przypadku demoClass), a następnie odwołania przez nazwę zmiennej.

Jeśli klasy lub struktury Shared Członkowskie, masz prawo tego członka z nazwą klasy lub struktury lub zmienna lub wyrażenie, które wskazuje na wystąpienie.

Moduł nie ma żadnych osobne instancje i wszyscy jego członkowie są Shared domyślnie.Dlatego kwalifikują się członkiem modułu o nazwie modułu.

Poniższy przykład pokazuje kwalifikowaną odniesienia do procedury Członkowskie modułu.Przykład oświadcza dwóch Sub procedury, zarówno nazwany perform, w różnych modułach w projekcie.Każdy z nich mogą być określone bez kwalifikacji w ramach swój własny moduł, ale musi być kwalifikowaną, jeśli wywoływany z jakimkolwiek innym miejscu.Ponieważ ostatni odwołanie w module3 nie kwalifikują się perform, kompilator nie może rozpoznać tego odwołania.

' 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

Odniesienia do projektów

Aby użyć Public (Visual Basic) elementy zdefiniowane w innym projekcie, należy najpierw ustawić odniesienia do tego projektu montażu lub typ biblioteki.Aby ustawić odwołanie, kliknij Dodaj odwołanie na Projekt menu lub użyj /reference (Visual Basic) opcję kompilatora wiersza polecenia.

Na przykład, można użyć modelu obiektów XML z .NET Framework.Jeśli ustawić odwołanie System.Xml obszaru nazw, można zadeklarować i używać żadnego z jej klas, takie jak XmlDocument.W poniższym przykładzie użyto 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

Importowanie, zawierające elementy

Można użyć Imports — Instrukcja (.NET Namespace i Type) do przywóz przestrzenie nazw, które może zawierać modułów ani klas, które chcesz użyć.Dzięki temu można odwoływać się do elementów zdefiniowanych w zaimportowanego obszaru nazw bez pełni kwalifikujących się ich nazwy.Poniższy przykład zapisuje ponownie w poprzednim przykładzie, aby zaimportować System.Xml obszaru nazw.

' 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

Dodatkowo Imports instrukcji można zdefiniować alias importowania dla każdego zaimportowanego obszaru nazw.Można to, że kod źródłowy krótsze i łatwiejsze do odczytania.Poniższy przykład zapisuje ponownie w poprzednim przykładzie, aby użyć xD jako alias dla System.Xml obszaru nazw.

' 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 Instrukcja nie udostępnia elementy z innych projektów do aplikacji.Oznacza to, że nie zabiera miejsce ustawienie odwołanie.Importowanie tylko obszar nazw usuwa wymaganie przy przyporządkowywaniu nazw określonych w tym obszarze nazw.

Można również użyć Imports instrukcji, aby importować moduły klasy, struktury i wyliczenia.Następnie można użyć członków takich elementów przywożone bez kwalifikacji.Jednakże musi zawsze kwalifikują się nieudostępnionym członkowie klas i struktur, zmienna lub wyrażenie, którego wynikiem do instancji klasy lub struktury.

Wskazówki dotyczące nazewnictwa

Podczas definiowania dwóch lub więcej elementów programowania, które mają taką samą nazwę, niejednoznaczności może występować, gdy kompilator próbuje rozpoznać odwołania do tej nazwy.Jeśli więcej niż jedna definicja jest w zasięgu lub jeżeli brak definicji zakresu, odwołanie jest nierozwiązywalne.Na przykład zobacz "Kwalifikowaną odniesienia Example" na tej stronie pomocy.

Można uniknąć niejednoznaczności, dając wszystkie elementy unikatowe nazwy.Następnie można wprowadzić odwołanie do dowolnego elementu bez konieczności kwalifikują się jej nazwę z obszaru nazw, moduł lub klasy.Można także zmniejszyć szanse przypadkowo odnoszące się do niewłaściwego elementu.

Cieniowanie

Gdy dwa elementy programistyczne mają tę samą nazwę, jeden z nich można ukryć, lub tle, drugiego.Tekst z cieniem element nie jest dostępne dla odwołania; Zamiast tego, kiedy swój kod używa nazwy cieniowany elementu Visual Basic kompilator usuwa ona przesłaniania elementów.Aby uzyskać bardziej szczegółowe wyjaśnienie z przykładami, zobacz Przesłanianie w Visual Basic.

Zobacz też

Zadania

Porady: modyfikowanie właściwości projektu i ustawień konfiguracji

Informacje

Imports — Instrukcja (.NET Namespace i Type)

New — Operator (Visual Basic)

Public (Visual Basic)

Koncepcje

Zadeklarowane nazwy elementów (Visual Basic)

Zadeklarowana charakterystyka elementów (Visual Basic)

Zmienne w Visual Basic