Sdílet prostřednictvím


Typ propagace (Visual Basic)

Když deklarujete programovací element v modulu Visual Basic propaguje jeho obor názvů obsahující modul.Jedná se o podporu typu.

Následující příklad ukazuje definici obalu s kostlivcem modulu a dva členy modulu.

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

V rámci projModule, programovací prvky deklarované na úrovni modulu jsou povýšen na projNamespace.V předchozím příkladu basicEnum a innerClass povýšen, ale numberSub je, protože není deklarován na úrovni modulu.

Vliv typu propagace

Účinkem propagace typ je řetězec kvalifikaci není nutné zahrnout název modulu.Následující příklad provádí dvě volání na postup v předchozím příkladu.

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

V předchozím příkladu první volání použije řetězce úplnou kvalifikaci.Ale to není nutné z důvodu typu propagace.Druhé volání také přístupy členy v modulu bez včetně projModule v řetězcích kvalifikace.

Odpojovací typ podpory

Obor názvů již člen se stejným názvem jako člen modulu, je typ propagace defeated pro modul člena.Následující příklad ukazuje definici obalu s kostlivcem výčet a modul v rámci stejného oboru názvů.

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

V předchozím příkladu Visual Basic nelze povýšit třídu abc na thisNameSpace protože je již výčet se stejným názvem na úrovni oboru názvů.Přístup abcSub, je třeba použít řetězec úplné kvalifikace thisNamespace.thisModule.abc.abcSub.Třída však xyz stále povýšen a mají přístup k xyzSub s kratší řetězce kvalifikace thisNamespace.xyz.xyzSub.

xz7s1h1x.collapse_all(cs-cz,VS.110).gifOdpojovací typ propagace částečných typů.

Třídy nebo struktury uvnitř modul používá Částečná (Visual Basic) klíčové slovo, typ propagace je automaticky defeated třídy nebo struktury, zda obor názvů má člen se stejným názvem.Ostatní prvky v modulu jsou stále nárok na podporu typu.

Důsledky. Odpojovací částečnou definici typu podpory může způsobit neočekávané výsledky a dokonce chyby kompilátoru.Následující příklad ukazuje obalu s kostlivcem částečná definice třídy, z nichž jeden je uvnitř modulu.

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

V předchozím příkladu vývojář očekávali kompilátor sloučit dvě částečná definice sampleClass.Kompilátor však nepovažuje podpora pro částečnou definici uvnitř sampleModule.Výsledkem pokusů o dvě třídy odděleného kompilace, oba s názvem sampleClass , ale s jinou kvalifikaci cesty.

Kompilátor sloučí částečná definice pouze v případě, že jejich úplné cesty jsou identické.

Doporučení

Následující doporučení představují vhodné programování.

  • Jedinečné názvy. Máte úplnou kontrolu nad pojmenování programovací prvky, je vždy vhodné používat všude jedinečné názvy.Stejné názvy vyžadují zvláštní kvalifikaci a můžete vytvořit kód těžší číst.Může také vést k výskytu zákeřných chyb a neočekávané výsledky.

  • Úplné kvalifikace. Při práci s moduly a další prvky ve stejném oboru názvů nejbezpečnější přístupem je vždy použít úplnou kvalifikaci pro všechny programovací prvky.Pokud defeated pro modul člena typu propagace a nejsou z způsobilé člena nelze nechtěně přístup k jiné programovací element.

Viz také

Úkoly

Jak: řízení oboru proměnné (Visual Basic)

Referenční dokumentace

Příkaz Module

Příkaz Namespace

Částečná (Visual Basic)

Koncepty

Obor v jazyce Visual Basic

Odkazy na prvky deklarované (Visual Basic)