Modulutasítás

Deklarálja a modul nevét, és bevezeti a modul változóinak, tulajdonságainak, eseményeinek és eljárásainak definícióját.

Syntax

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

Részek

attributelist
Opcionális. Lásd: Attribútumlista.

accessmodifier
Opcionális. A következők egyike lehet:

Lásd a Visual Basic hozzáférési szintjeinek megtekintését.

name
Szükséges. A modul neve. Lásd: Deklarált elemnevek.

statements
Opcionális. A modul változóit, tulajdonságait, eseményeit, eljárásait és beágyazott típusait meghatározó utasítások.

End Module
Leállítja a definíciót Module .

Megjegyzések

Az Module utasítás a névtérben elérhető referenciatípust határozza meg. A modul (más néven standard modul) hasonló az osztályhoz, de néhány fontos különbséggel. Minden modulnak pontosan egy példánya van, és nem kell létrehozni vagy hozzárendelni egy változóhoz. A modulok nem támogatják az öröklést és az interfészek implementálását. Figyelje meg, hogy a modul nem olyan típusú , mint egy osztály vagy struktúra – nem deklarálhat egy programozási elemet úgy, hogy a modul adattípusa legyen.

Csak névtérszinten használható Module . Ez azt jelenti, hogy a modul deklarációs környezetének forrásfájlnak vagy névtérnek kell lennie, és nem lehet osztály, struktúra, modul, interfész, eljárás vagy blokk. Nem ágyazhat be modulokat egy másik modulba vagy bármilyen típusba. További információ: Deklarációs környezetek és alapértelmezett hozzáférési szintek.

Egy modul élettartama megegyezik a program élettartamával. Mivel a tagok mind Shared, ők is élettartam egyenlő, hogy a program.

A modulok alapértelmezés szerint a Friend-hozzáféréshez lesznek kapcsolva. A hozzáférési szinteket a hozzáférési módosítókkal módosíthatja. További információ: Hozzáférési szintek a Visual Basicben.

A modul minden tagja implicit módon Sharedvan.

Osztályok és modulok

Ezek az elemek sok hasonlóságot mutatnak, de van néhány fontos különbség is.

  • Terminológia. A Visual Basic korábbi verziói kétféle modult ismernek fel: osztálymodulokat (.cls-fájlokat) és standard modulokat (.bas-fájlokat). Az aktuális verzió ezeket az osztályokat és modulokat hívja meg.

  • Megosztott tagok. Szabályozhatja, hogy egy osztály egy tagja megosztott vagy példánytag-e.

  • Objektum tájolása. Az osztályok objektumorientáltak, de a modulok nem. Így csak osztályok hozhatók létre objektumként. További információ: Objektumok és osztályok.

Szabályok

  • Módosítók. Minden modultag implicit módon meg van osztva. Tag deklarálásakor nem használhatja a Shared kulcsszót, és egyetlen tag megosztott állapotát sem módosíthatja.

  • Öröklési. Egy modul nem örökölhet más típusból, mint Objectamelytől az összes modul örököl. Az egyik modul nem örökölhető a másiktól.

    A moduldefinícióban nem használhatja az Öröklődő utasítást , még a megadásával Objectsem.

  • Alapértelmezett tulajdonság. A modulban nem definiálhat alapértelmezett tulajdonságokat. További információ: Alapértelmezett.

Működés

  • Hozzáférési szint. Egy modulon belül minden tagot saját hozzáférési szinttel deklarálhat. A modultagok alapértelmezés szerint nyilvános hozzáféréssel érhetők el, kivéve a változókat és állandókat, amelyek alapértelmezés szerint privát hozzáféréssel érhetők el. Ha egy modul több korlátozott hozzáféréssel rendelkezik, mint az egyik tagja, a megadott modul hozzáférési szintje elsőbbséget élvez.

  • Hatály. Egy modul a teljes névtérben hatókörben van.

    Minden modultag hatóköre a teljes modul. Figyelje meg, hogy minden tag típus-előléptetésen megy keresztül, ami miatt a hatóköre előléptethető a modult tartalmazó névtérben. További információ: Típus-előléptetés.

  • Képesítés. Egy projektben több modul is lehet, és két vagy több modulban azonos nevű tagokat deklarálhat. Ha azonban a hivatkozás a modulon kívülről származik, a megfelelő modulnévvel kell minősítenie az ilyen tagra mutató hivatkozásokat. További információ: Deklarált elemekre mutató hivatkozások.

Példa

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

Lásd még