Share via


Module-instructie

Declareert de naam van een module en introduceert de definitie van de variabelen, eigenschappen, gebeurtenissen en procedures die de module omvat.

Syntaxis

[ <attributelist> ] [ accessmodifier ]  Module name
    [ statements ]
End Module

generator

attributelist
Optioneel. Zie de lijst met kenmerken.

accessmodifier
Optioneel. Dit kan een van de volgende zijn:

Zie Access-niveaus in Visual Basic.

name
Vereist. Naam van deze module. Zie Gedeclareerde elementnamen.

statements
Optioneel. Instructies die de variabelen, eigenschappen, gebeurtenissen, procedures en geneste typen van deze module definiëren.

End Module
Hiermee wordt de Module definitie beëindigd.

Opmerkingen

Een Module instructie definieert een referentietype dat beschikbaar is in de naamruimte. Een module (ook wel een standaardmodule genoemd) is vergelijkbaar met een klasse, maar met enkele belangrijke verschillen. Elke module heeft precies één exemplaar en hoeft niet te worden gemaakt of toegewezen aan een variabele. Modules bieden geen ondersteuning voor overname of implementeren van interfaces. U ziet dat een module geen type is in de zin dat een klasse of structuur is. U kunt geen programmeerelement declareren om het gegevenstype van een module te hebben.

U kunt alleen op naamruimteniveau gebruiken Module . Dit betekent dat de declaratiecontext voor een module een bronbestand of naamruimte moet zijn en geen klasse, structuur, module, interface, procedure of blok kan zijn. U kunt een module niet nesten binnen een andere module of binnen een willekeurig type. Zie Declaratiecontexten en standaardtoegangsniveaus voor meer informatie.

Een module heeft dezelfde levensduur als uw programma. Omdat de leden allemaal Sharedzijn, hebben ze ook levensduur die gelijk is aan die van het programma.

Modules zijn standaard ingesteld op Vriend-toegang . U kunt hun toegangsniveaus aanpassen met de toegangsaanpassingen. Zie Access-niveaus in Visual Basic voor meer informatie.

Alle leden van een module zijn impliciet Shared.

Klassen en modules

Deze elementen hebben veel overeenkomsten, maar er zijn ook enkele belangrijke verschillen.

  • Terminologie. In eerdere versies van Visual Basic worden twee typen modules herkend: klassemodules (.cls-bestanden) en standaardmodules (.bas-bestanden). De huidige versie roept deze klassen en modules respectievelijk aan.

  • Gedeelde leden. U kunt bepalen of een lid van een klasse een gedeeld lid of exemplaarlid is.

  • Objectstand. Klassen zijn objectgeoriënteerd, maar modules zijn niet. Alleen klassen kunnen dus worden geïnstantieerd als objecten. Zie Objecten en klassen voor meer informatie.

Regels

  • Modifiers. Alle moduleleden worden impliciet gedeeld. U kunt het trefwoord niet gebruiken bij het Shared declareren van een lid en u kunt de gedeelde status van een lid niet wijzigen.

  • Overname. Een module kan niet worden overgenomen van een ander type dan Object, waarvan alle modules overnemen. In het bijzonder kan de ene module niet worden overgenomen van een andere module.

    U kunt de instructie Overnames niet gebruiken in een moduledefinitie, zelfs niet om op te geven Object.

  • Standaardeigenschap. U kunt geen standaardeigenschappen in een module definiëren. Zie Standaard voor meer informatie.

Gedrag

  • Toegangsniveau. In een module kunt u elk lid declareren met een eigen toegangsniveau. Moduleleden zijn standaard ingesteld op openbare toegang, met uitzondering van variabelen en constanten, die standaard privétoegang hebben. Wanneer een module meer beperkte toegang heeft dan een van de leden, heeft het opgegeven toegangsniveau van de module voorrang.

  • Reikwijdte. Een module bevindt zich binnen het bereik van de naamruimte.

    Het bereik van elk modulelid is de hele module. U ziet dat alle leden typepromotie ondergaan, waardoor hun bereik wordt gepromoveerd naar de naamruimte die de module bevat. Zie Type promotie voor meer informatie.

  • Kwalificatie. U kunt meerdere modules in een project hebben en u kunt leden met dezelfde naam declareren in twee of meer modules. U moet echter elke verwijzing naar een dergelijk lid met de juiste modulenaam kwalificeren als de verwijzing zich buiten die module bevindt. Zie Verwijzingen naar gedeclareerde elementen voor meer informatie.

Voorbeeld

Public Module thisModule
    Sub Main()
        Dim userName As String = InputBox("What is your name?")
        MsgBox("User name is " & userName)
    End Sub
    ' Insert variable, property, procedure, and event declarations.
End Module

Zie ook