Module-Anweisung

Aktualisiert: November 2007

Deklariert den Namen eines Moduls und führt die Definitionen der Variablen, Eigenschaften, Ereignisse und Prozeduren ein, die die Struktur umfasst.

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

Bestandteile

  • attributelist
    Optional. Siehe Attributliste.

  • accessmodifier
    Optional. Einer der folgenden Werte ist möglich:

    Siehe Zugriffsebenen in Visual Basic.

  • name
    Erforderlich. Name des Moduls. Siehe Namen deklarierter Elemente.

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

  • End Module
    Beendet die Module-Definition.

Hinweise

Eine Module-Anweisung definiert einen Verweistyp, der im gesamten Namespace verfügbar ist. Ein Modul (zuweilen auch als Standardmodul bezeichnet)ähnelt einer Klasse, doch bestehen einige wichtige Unterschiede. Jedes Modul verfügt über genau eine Instanz und muss weder erstellt noch einer Variablen zugewiesen werden. Module unterstützen keine Vererbung und implementieren keine Schnittstellen. Beachten Sie, dass ein Modul kein Typ in dem Sinn ist, in dem eine Klasse oder Struktur ein Typ ist – Sie können ein Programmierelement nicht mit einem Datentyp Modul deklarieren.

Module kann nur auf Namespaceebene verwendet werden. Dies bedeutet, dass der Deklarationskontext für ein Modul eine Quelldatei oder ein Namespace sein muss und keine Klasse, keine Struktur, kein Modul, keine Schnittstelle, keine Prozedur und kein Block sein kann. Sie können Module nicht in anderen Modulen und auch nicht in einem Typ schachteln. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.

Ein Modul verfügt über die gleiche Lebensdauer wie das Programm. Da alle seine Member Shared sind, entspricht deren Lebensdauer ebenfalls der Lebensdauer des Programms.

Der Standardzugriff für Module ist Friend (Visual Basic). 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 weisen viele Ähnlichkeiten auf, jedoch bestehen auch einige wichtige Unterschiede.

  • Begriffe. In älteren Versionen von Visual Basis werden zwei Typen von Modulen erkannt: 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 freigegebener Member oder ein Instanzmember ist.

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

Regeln

  • Modifizierer. Alle Modulmember sind implizit Shared (Visual Basic). Sie können beim Deklarieren eines Members nicht das Shared-Schlüsselwort verwenden, und Sie können den freigegebenen Status von Membern 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 einem anderen Modul erben.

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

  • Standardeigenschaft. Sie können in einem Modul keine Standardeigenschaften definieren.

Verhalten

  • Zugriffsebene. In einem Modul können Sie jeden Member mit einer eigenen Zugriffsebene deklarieren. Der Standardzugriff für Module ist Public (Visual Basic), mit Ausnahme von Variablen und Konstanten, deren Standardzugriff Private (Visual Basic) ist. Wenn ein Modul eingeschränkteren Zugriff als einer seiner Member aufweist, hat die angegebene Zugriffsebene des Moduls Vorrang.

  • Gültigkeitsbereich. Der Gültigkeitsbereich eines Moduls erstreckt sich auf seinen gesamten Namespace.

    Der Gültigkeitsbereich jedes Modulmembers umfasst das gesamte Modul. Beachten Sie, dass auf alle Member Typerweiterung angewendet wird, sodass ihr Gültigkeitsbereich auf den Namespace erweitert wird, der das Modul enthält. Weitere Informationen finden Sie unter Typerweiterung.

  • Qualifizierung. In einem Projekt können sich mehrere Module befinden, und Sie können in mehreren Modulen Member mit demselben Namen deklarieren. Sie müssen jedoch jeden Verweis auf einen solchen Member mit dem entsprechenden Modulnamen qualifizieren, wenn sich der Verweis außerhalb dieses Moduls befindet. Weitere Informationen finden Sie unter Auflösen eines Verweises bei mehreren Variablen mit gleichem Namen.

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

Konzepte

Typerweiterung

Referenz

Class-Anweisung (Visual Basic)

Namespace-Anweisung

Structure-Anweisung

Interface-Anweisung (Visual Basic)

Property-Anweisung