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.
Odpojovací 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)