Udostępnij za pośrednictwem


Typ promocji (Visual Basic)

Przy deklarowaniu programowania elementu w module, Visual Basic promuje jej zakresu na obszar nazw zawierający moduł.Jest to znane jako typu promocji.

Poniższy przykład pokazuje szkielet definicji modułu i dwóch członków tego modułu.

Namespace projNamespace
    Module projModule
        Public Enum basicEnum As Integer
            one = 1
            two = 2
        End Enum
        Public Class innerClass
            Shared Sub numberSub(ByVal firstArg As Integer)
            End Sub
        End Class
    End Module
End Namespace

W ramach projModule, programowania elementy zadeklarowane na poziomie modułu są podwyższony do projNamespace.W poprzednim przykładzie basicEnum i innerClass są wspierane, ale numberSub jest nie, ponieważ nie jest zadeklarowany jako na poziomie modułu.

Efekt typu promocji

Efekt promocji typu jest ciąg kwalifikacji nie musi zawierać nazwę modułu.Poniższy przykład powoduje, że dwa wywołania procedury w poprzednim przykładzie.

Sub usePromotion()
    projNamespace.projModule.innerClass.numberSub(projNamespace.projModule.basicEnum.one)
    projNamespace.innerClass.numberSub(projNamespace.basicEnum.two)
End Sub

W poprzednim przykładzie pierwsze wywołanie używa ciągów pełne kwalifikacje.Jednakże nie jest to konieczne ze względu na rodzaj promocji.Drugie wywołanie również uzyskuje dostęp do modułu członków bez łącznie z projModule w ciągach kwalifikacji.

Porażka typu promocji

Jeśli obszar nazw ma już członek o tej samej nazwie członka moduł, promowanie typu jest pokonane dla tego członka modułu.Poniższy przykład pokazuje szkielet definicji wyliczenie i moduł w obrębie tej samej przestrzeni nazw.

Namespace thisNamespace
    Public Enum abc
        first = 1
        second
    End Enum
    Module thisModule
        Public Class abc
            Public Sub abcSub()
            End Sub
        End Class
        Public Class xyz
            Public Sub xyzSub()
            End Sub
        End Class
    End Module
End Namespace

W poprzednim przykładzie Visual Basic nie można podwyższyć poziomu klasy abc do thisNameSpace , ponieważ jest już wyliczenia o tej samej nazwie na poziomie obszaru nazw.Dostęp abcSub, musisz użyć ciągu kwalifikacji pełne thisNamespace.thisModule.abc.abcSub.Jednakże klasy xyz jest nadal promować i można uzyskać dostęp xyzSub z ciągiem krótszym kwalifikacji thisNamespace.xyz.xyzSub.

xz7s1h1x.collapse_all(pl-pl,VS.110).gifPorażka promocji typu dla typów częściowych

Jeśli używa się klasy lub struktury wewnątrz modułu Częściowe (Visual Basic) słowa kluczowego, promocji typu jest automatycznie pokonane dla danej klasy lub struktury, niezależnie od tego, czy przestrzeń nazw ma członek o tej samej nazwie.Inne elementy w module kwalifikują się nadal do typu promocji.

Konsekwencje. Porażka typu promocji definicji częściowej może spowodować nieoczekiwane wyniki, a nawet błędy kompilatora.Poniższy przykład pokazuje szkielet częściowe definicji klasy, z których jedna jest wewnątrz modułu.

Namespace sampleNamespace
    Partial Public Class sampleClass
        Public Sub sub1()
        End Sub
    End Class
    Module sampleModule
        Partial Public Class sampleClass
            Public Sub sub2()
            End Sub
        End Class
    End Module
End Namespace

W poprzednim przykładzie autora oczekiwać kompilatora, aby scalić dwie definicje częściowe sampleClass.Jednak kompilator nie należy rozważyć wspieranie dla definicji częściowej wewnątrz sampleModule.W wyniku próby skompilować dwa odrębne i niezależne klas, zarówno o nazwie sampleClass , ale z różnych kwalifikacji ścieżki.

Kompilator scalenia częściowe definicje tylko wtedy, gdy ich w pełni kwalifikowanych ścieżek są identyczne.

Zalecenia

Następujące zalecenia stanowią dobrą praktykę programistyczną.

  • Unikatowe nazwy. Jeśli masz pełną kontrolę nad nazewnictwem programowania elementów, zawsze jest dobrym pomysłem jest wszędzie używać unikatowych nazw.Identyczne nazwy wymagają dodatkowych kwalifikacji i może poprawić czytelność kodu trudniej odczytać.Również może prowadzić do powstawania błędów i nieoczekiwane wyniki.

  • Pełne kwalifikacje. Podczas pracy z modułami i innych elementów w tej samej przestrzeni nazw najbezpieczniejszy sposób podejścia jest zawsze używać pełnej kwalifikacji dla wszystkich elementów programowania.Jeśli pokonane dla członka moduł jest promocji typu i nie pełni zakwalifikowania tego członka, można przypadkowo uzyskać dostępu do różnych elementów programowania.

Zobacz też

Zadania

Jak: kontrolować zakres zmiennej (Visual Basic)

Informacje

Moduł instrukcji

Deklaracji obszaru nazw

Częściowe (Visual Basic)

Koncepcje

Zakres w języku Visual Basic

Odniesienia do zadeklarowanych elementów (Visual Basic)