Module-Anweisung

Deklariert den Namen eines Moduls und führt die Definitionen der Variablen, Eigenschaften, Ereignisse und Prozeduren ein, aus denen das Modul besteht.

Syntax

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

Bestandteile

attributelist
Optional. Siehe Attributliste.

accessmodifier
Optional. Dabei kann es sich um eine der folgenden Methoden handeln:

Siehe Access levels in Visual Basic.

name
Erforderlich. Der Name dieses Moduls. Siehe Declared Element Names.

statements
Optional. Anweisungen, die die Variablen, Eigenschaften, Ereignisse, Prozeduren und geschachtelten Typen dieses Moduls definieren.

End Module
Beendet die Module-Definition.

Bemerkungen

Eine Module-Anweisung definiert einen Verweistyp, der im gesamten Namespace verfügbar ist. Ein Modul (manchmal auch als Standardmodul bezeichnet) ähnelt einer Klasse, weist jedoch einige wichtige Unterschiede auf. Jedes Modul verfügt über genau eine Instanz und muss mit keiner Variable erstellt oder einer Variable zugewiesen werden. Module unterstützen keine Vererbung und implementieren keine Schnittstellen. Beachten Sie, dass ein Modul kein Typ im Sinne einer Klasse oder Struktur ist. Sie können ein Programmierelement nicht mit dem Datentyp „Modul“ deklarieren.

Module kann nur auf Namespaceebene verwendet werden. Der Deklarationskontext für ein Modul muss demnach eine Quelldatei oder ein Namespace sein und kann weder Klasse, Struktur, Modul, Schnittstelle, Prozedur noch Block sein. Sie können ein Modul nicht innerhalb eines anderen Moduls oder eines Typs verschachteln. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.

Ein Modul hat die gleiche Lebensdauer wie Ihr Programm. Da die Mitglieder alle Shared sind, haben sie auch eine Lebensdauer, die der des Programms entspricht.

Der Standardzugriff für Module ist Friend. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.

Alle Member eines Moduls sind implizit Shared.

Klassen und Module

Diese Elemente haben viele Ähnlichkeiten, aber es gibt auch einige wichtige Unterschiede.

  • Terminologie. Frühere Versionen von Visual Basic erkennen zwei Typen von Modulen: Klassenmodule (CLS-Dateien) und Standardmodule (BAS-Dateien). In der aktuellen Version werden diese als Klassen bzw. Module bezeichnet.

  • Freigegebene Member. Sie können steuern, ob ein Member einer Klasse ein freigegebenes oder ein Instanzmember ist.

  • Objektorientierung. Klassen sind objektorientiert, Module hingegen nicht. Daher können nur Klassen als Objekte instanziiert werden. Weitere Informationen finden Sie unter Objekte und Klassen.

Regeln

  • Modifizierer. Alle Modulmember werden implizit freigegeben. Sie können das Shared-Schlüsselwort nicht beim Deklarieren eines Member verwenden und Sie können den Freigabestatus eines Member nicht ändern.

  • Vererbung. Ein Modul kann von keinem anderen Typ als von Object erben, von dem alle Module erben. Insbesondere kann ein Modul nicht von einer anderen Struktur erben.

    Sie können die Inherits-Anweisung nicht in einer Moduldefinition verwenden, auch nicht zum Angeben von Object.

  • Standardeigenschaft. Sie können keine Standardeigenschaften in einem Modul definieren. Weitere Informationen finden Sie unter Standard.

Verhalten

  • Zugriffsebene. In einem Modul können Sie jeden Member mit einer eigenen Zugriffsebene deklarieren. Für Modulmember wird standardmäßig öffentlicher Zugriff verwendet, mit Ausnahme von Variablen und Konstanten, für die standardmäßig privater Zugriff verwendet wird. Wenn ein Modul über eingeschränkteren Zugriff verfügt als eines seiner Member, hat die angegebene Modulzugriffsebene Vorrang.

  • Umfang. Der Gültigkeitsbereich eines Moduls umfasst den gesamten Namespace.

    Der Gültigkeitsbereich eines Modulelements umfasst das gesamte Modul. Beachten Sie, dass alle Member einer Typerweiterung unterzogen werden, wodurch ihr Bereich in den Namespace heraufgestuft wird, der das Modul enthält. Weitere Informationen finden Sie unter Typerweiterung.

  • Qualifikation. Sie können mehrere Module in einem Projekt haben und Sie können Member mit demselben Namen in zwei oder mehr Modulen deklarieren. Sie müssen jedoch jeden Verweis auf ein solches Element mit dem entsprechenden Modulnamen qualifizieren, wenn der Verweis von außerhalb dieses Moduls stammt. Weitere Informationen finden Sie unter References to Declared Elements.

Beispiel

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

Siehe auch