Modules (Module) in Visual Basic worden historisch gebruikt voor het opslaan van procedures, functies en variabelen die beschikbaar zijn in het hele project zonder expliciet een instantie te creëren. Met de introductie van klassen overlappen hun rollen gedeeltelijk, maar er zijn fundamentele verschillen gebleven.
Achtergrond:
In klassiek Visual Basic (VB6) waren modules de enige manier om gemeenschappelijke functies en globale variabelen te groeperen. In VB.NET zijn modules gebleven, maar met uitbreidingen van de mogelijkheden van klassen.
Probleem:
Een ontwikkelaar begrijpt mogelijk het verschil tussen een module en een klasse niet, wat leidt tot verkeerde keuzes in de opslag van logica, onbedoelde code-dubbelingen of onverwacht gedrag van variabelen.
Oplossing:
De keuze tussen een module en een klasse hangt af van de doelen:
Code voorbeeld:
' Module Module MathUtils Public Function Add(x As Integer, y As Integer) As Integer Return x + y End Function End Module ' Gebruik Dim result = MathUtils.Add(5, 10)
Belangrijke kenmerken:
Shared en toegankelijk zonder een instantie.Als een variabele in de module als Public wordt gedeclareerd, is deze dan gemeenschappelijk voor alle formulieren/klassen van de applicatie?
Ja. Public variabelen in een module zijn in feite globaal. Ze zijn toegankelijk vanuit elke code in het project, wat handig is, maar kan leiden tot fouten bij multithreading of onbedoelde herschrijving van waarden.
Kan een module worden geïnstantieerd met behulp van New?
Nee. Modules kunnen niet worden geïnstantieerd. Al hun functionaliteit is statisch beschikbaar.
Kun je een module erfen of een module объявлении с модификаторами доступа Protected или Private?
Nee. Modules zijn niet erfen en worden alleen op het niveau van de namespace verklaard, ze kunnen niet genest zijn of andere toegangsmodificatoren hebben dan Public of Friend.
In het project worden alle variabelen voor de gebruikersstatus als Public in een module gedeclareerd. Bij elke wijziging van een waarde in één formulier wordt dit onmiddellijk nieuw voor alle andere.
Voordelen:
Nadelen:
Een module wordt alleen gebruikt voor het opslaan van hulpfuncties (bijvoorbeeld omzettingsfuncties), terwijl de gebruikersstatus wordt opgeslagen in klassen met encapsulatie.
Voordelen:
Nadelen: