Modulsats

Deklarerar namnet på en modul och introducerar definitionen av variabler, egenskaper, händelser och procedurer som ingår i modulen.

Syntax

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

Delar

attributelist
Valfritt. Se Attributlista.

accessmodifier
Valfritt. Kan vara något av följande:

Se Åtkomstnivåer i Visual Basic.

name
Obligatoriska. Namnet på den här modulen. Se Deklarerade elementnamn.

statements
Valfritt. Instruktioner som definierar variabler, egenskaper, händelser, procedurer och kapslade typer av den här modulen.

End Module
Module Avslutar definitionen.

Kommentarer

En Module instruktion definierar en referenstyp som är tillgänglig i hela namnområdet. En modul (kallas ibland en standardmodul) liknar en klass men med några viktiga distinktioner. Varje modul har exakt en instans och behöver inte skapas eller tilldelas till en variabel. Moduler stöder inte arv eller implementerar gränssnitt. Observera att en modul inte är en typ i den meningen att en klass eller struktur är – du kan inte deklarera ett programmeringselement för att ha datatypen för en modul.

Du kan bara använda Module på namnområdesnivå. Det innebär att deklarationskontexten för en modul måste vara en källfil eller ett namnområde och får inte vara en klass, struktur, modul, gränssnitt, procedur eller block. Du kan inte kapsla en modul i en annan modul eller inom någon typ. Mer information finns i Deklarationskontexter och standardåtkomstnivåer.

En modul har samma livslängd som programmet. Eftersom dess medlemmar är alla Sharedhar de också livstider som är lika med programmets.

Modulerna är som standard vänåtkomst . Du kan justera deras åtkomstnivåer med åtkomstmodifierarna. Mer information finns i Åtkomstnivåer i Visual Basic.

Alla medlemmar i en modul är implicit Shared.

Klasser och moduler

Dessa element har många likheter, men det finns även några viktiga skillnader.

  • Terminologi. Tidigare versioner av Visual Basic känner igen två typer av moduler: klassmoduler (.cls-filer) och standardmoduler (.bas-filer). Den aktuella versionen anropar dessa klasser respektive moduler.

  • Delade medlemmar. Du kan styra om en medlem i en klass är en delad medlem eller instansmedlem.

  • Objektorientering. Klasser är objektorienterade, men moduler är det inte. Därför kan endast klasser instansieras som objekt. Mer information finns i Objekt och klasser.

Regler

  • Modifierare. Alla modulmedlemmar delas implicit. Du kan inte använda nyckelordet Shared när du deklarerar en medlem och du kan inte ändra den delade statusen för någon medlem.

  • Arv. En modul kan inte ärva från någon annan typ än Object, från vilken alla moduler ärver. I synnerhet kan en modul inte ärva från en annan.

    Du kan inte använda instruktionen Inherits i en moduldefinition, inte ens för att ange Object.

  • Standardegenskap. Du kan inte definiera några standardegenskaper i en modul. Mer information finns i Standard.

Funktionssätt

  • Åtkomstnivå. I en modul kan du deklarera varje medlem med sin egen åtkomstnivå. Modulmedlemmar är standard för offentlig åtkomst, förutom variabler och konstanter, som standard för privat åtkomst. När en modul har mer begränsad åtkomst än en av dess medlemmar har den angivna modulåtkomstnivån företräde.

  • Omfattning. En modul finns i omfånget i hela namnområdet.

    Omfånget för varje modulmedlem är hela modulen. Observera att alla medlemmar genomgår typhöjning, vilket gör att deras omfång befordras till det namnområde som innehåller modulen. Mer information finns i Typhöjning.

  • Kvalifikationer. Du kan ha flera moduler i ett projekt och du kan deklarera medlemmar med samma namn i två eller flera moduler. Du måste dock kvalificera en referens till en sådan medlem med lämpligt modulnamn om referensen är utanför modulen. Mer information finns i Referenser till deklarerade element.

Exempel

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

Se även