Udostępnij za pośrednictwem


Przestrzenie nazw w Visual Basic

Przestrzenie nazw organizowania obiektów, zdefiniowany w zestawie.Zespoły mogą zawierać wiele obszarów nazw, który z kolei może zawierać inne obszary nazw.Obszary nazw uniknąć niejednoznaczności i uproszczenia odniesienia przy użyciu dużych grup obiektów, takich jak biblioteki klas.

Na przykład .NET Framework definiuje ListBox klasy w System.Windows.Forms obszaru nazw.Poniższy fragment kodu przedstawia sposób deklarowania zmiennej przy użyciu w pełni kwalifikowanej nazwy dla tej klasy:

Dim LBox As System.Windows.Forms.ListBox

Unikanie konfliktów nazw

.NET Frameworkprzestrzenie nazw rozwiązać problem czasami nazywane zanieczyszczenia obszaru nazw, w którym autora Biblioteka klas jest utrudniona przez wykorzystanie podobne nazwy w innej bibliotece.Te konflikty z istniejących składników są czasami nazywane kolizje nazw.

Na przykład, jeśli tworzysz nową klasę o nazwie ListBox, można go używać wewnątrz projektu bez kwalifikacji.Jednakże jeśli chcesz użyć .NET FrameworkListBox klasy w samym projekcie pełną odniesienia należy użyć, aby odnieść unikatowe. Jeżeli odwołanie nie jest unikatowa, Visual Basic produkuje komunikat o błędzie informujący, że nazwa jest niejednoznaczna.Poniższy przykład kodu ilustruje sposób deklarowania tych obiektów:

' 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

Na poniższej ilustracji przedstawiono dwie hierarchie obszaru nazw, zawierające zarówno obiektu o nazwie ListBox.

Hierarchia przestrzeni nazw

Domyślnie każdy plik wykonywalny utworzyć z Visual Basic zawiera obszar nazw zawierający taką samą nazwę jak projektu.Na przykład zdefiniować obiekt w ramach projektu o nazwie ListBoxProject, ListBoxProject.exe plik wykonywalny zawiera przestrzeni nazw, nazywanej ListBoxProject.

Wiele zestawów można użyć tej samej przestrzeni nazw.Visual Basictraktuje je jako pojedynczy zestaw nazw.Na przykład można zdefiniować klasy obszaru nazw, o nazwie SomeNameSpace w zestawie o nazwie Assemb1i zdefiniować dodatkowe klasy dla tej samej przestrzeni nazw z zestawu o nazwie Assemb2.

W pełni kwalifikowane nazwy

W pełni kwalifikowane nazwy są odwołaniami do obiektów, które jest poprzedzona nazwą obszaru nazw, w którym obiekt jest zdefiniowany.Można użyć obiektów zdefiniowanych w innych projektach, tworząc odwołanie do klasy (wybierając Dodaj odwołanie z Projekt menu) i następnie użyć pełnej nazwy obiektu w kodzie.Poniższy fragment kodu ilustruje sposób użycia w pełni kwalifikowanej nazwy dla obiektu z innego projektu obszaru nazw:

Dim LBC As New ListBoxProject.Form1.ListBox

W pełni kwalifikowane nazwy zapobiec nazewnictwa konflikt, ponieważ one umożliwić kompilatora ustalić obiektu, który jest używany.Jednak same nazwy można uzyskać długie i kłopotliwe.Aby obejść to, można użyć Imports instrukcji, aby zdefiniować alias— skrócona nazwa, można użyć zamiast w pełni kwalifikowana nazwa.Na przykład poniższy przykład kodu tworzy aliasy dla dwóch w pełni kwalifikowane nazwy i korzysta z tych aliasów do definiowania dwóch obiektów.

Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox

Jeśli korzystasz z Imports instrukcja nie mają aliasów można używać wszystkich nazw, w tym obszarze nazw bez kwalifikacji, o ile są one unikatowe w projekcie.Jeżeli projekt zawiera Imports instrukcje dla obszarów nazw, zawierające elementy o tej samej nazwie, użytkownik musi pełnej nazwy tego podczas używania go.Załóżmy na przykład projektu zawarte dwie następujące Imports instrukcji:

' This namespace contains a class called Class1. 
Imports MyProj1
' This namespace also contains a class called Class1. 
Imports MyProj2

Jeśli spróbujesz użyć Class1 bez pełni kwalifikujących się, Visual Basic produkuje komunikat o błędzie informujący, że nazwa Class1 jest niejednoznaczna.

Sprawozdania z poziomu obszaru nazw

W obszarze nazw można zdefiniować elementów, takich jak moduły, interfejsy, klas, delegatów, wyliczeń, struktury i innych obszarach nazw.Nie można zdefiniować elementy, takie jak właściwości, procedur, zmiennych i zdarzeń na poziomie obszaru nazw.Te elementy muszą być zadeklarowane w kontenerach, takich jak moduły, struktury lub klasy.

Globalne słowa kluczowego w pełni kwalifikowane nazwy

Jeśli zdefiniowano zagnieżdżoną hierarchię nazw kodu wewnątrz tej hierarchii może być zablokowany dostęp do System obszar nazw.NET Framework.Poniższy przykład pokazuje hierarchię, w której SpecialSpace.System bloków przestrzeni nazw, dostęp do 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

W efekcie kompilatora Visual Basic pomyślnie nie można rozpoznać odwołania do Int32, ponieważ SpecialSpace.System nie definiuje Int32.Można użyć Global słowo kluczowe, aby rozpocząć łańcucha kwalifikacji na poziomie peryferyjnych.NET Framework class library.Pozwala to na określenie System obszaru nazw lub innych nazw biblioteki klas.Poniższy przykład ilustruje to.

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

Można użyć Global na dostęp innych obszarach nazw katalogu głównego poziomu, takich jak Microsoft.VisualBasic, a dowolnym obszarem nazw skojarzonych z projektem.

Globalne słowa kluczowego w sprawozdaniu obszaru nazw

Można również użyć Global słowa kluczowego w Namespace — Instrukcja.Dzięki temu można zdefiniować nazw głównego obszaru nazw w projekcie.

Wszystkie obszary nazw w projekcie są oparte na głównego obszaru nazw dla projektu.Visual Studio przypisuje nazwę projektu jako domyślny obszar nazw katalogu głównego cały kod w projekcie.Na przykład, jeśli projekt o nazwie ConsoleApplication1, jego elementów programowych należą do obszaru nazw ConsoleApplication1.Przy deklarowaniu Namespace Magnetosphere, odwołuje się do Magnetosphere w projekcie będzie posiadał dostęp do ConsoleApplication1.Magnetosphere.

W następujących przykładach użyto Global słowo kluczowe, aby zadeklarować nazw głównego obszaru nazw dla projektu.

Namespace Global.Magnetosphere

End Namespace 


Namespace Global 
    Namespace Magnetosphere

    End Namespace 
End Namespace

W deklaracji obszaru nazw Global nie może być zagnieżdżone w innym obszarze nazw.

Można użyć Strona aplikacji, Projektant projektu (Visual Basic) do przeglądania i modyfikowania Głównego obszaru nazw projektu.Dla nowych projektów Głównego obszaru nazw domyślnie nazwa projektu.Aby spowodować, że Global za przestrzeni nazw najwyższego poziomu, można wyczyścić Głównego obszaru nazw wpis tak, że pole jest puste.Czyszczenie Głównego obszaru nazw eliminuje potrzebę Global słowa kluczowego w deklaracji obszaru nazw.

Jeśli Namespace instrukcji deklaruje nazwę, która jest także nazw w.NET Framework.NET Framework nazw staje się niedostępny Jeśli Global słowo kluczowe nie jest używany w pełni kwalifikowanej nazwy.Aby włączyć dostęp do tego.NET Framework nazw bez korzystania z Global słowa kluczowego, może zawierać Global słowa kluczowego w Namespace instrukcji.

W poniższym przykładzie przedstawiono Global słowa kluczowego w System.Text deklaracja obszaru nazw.

Jeśli Global słowa kluczowego nie był obecny w deklaracji obszaru nazw StringBuilder nie może być używany bez określania Global.System.Text.StringBuilder.Dla projektów o nazwie ConsoleApplication1, odwołuje się do System.Text byłoby dostępu ConsoleApplication1.System.Text Jeśli Global nie użyto słowa kluczowego.

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

Zobacz też

Zadania

Porady: tworzenie i korzystanie z zestawów przy użyciu wiersza polecenia (C# i Visual Basic)

Informacje

Imports — Instrukcja (.NET Namespace i Type)

ListBox

System.Windows.Forms

Koncepcje

Zestawy i globalna pamięć podręczna zestawów (C# and Visual Basic)

Referencje i importy — Instrukcja (Visual Basic)

Pisanie kodu dla rozwiązań pakietu Office