次の方法で共有


Module ステートメント

モジュールの名前を宣言し、モジュールが構成する変数、プロパティ、イベント、およびプロシージャの定義を導入します。

構文

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

部品

attributelist
任意。 属性リストを参照してください

accessmodifier
任意。 次のいずれかを指定できます。

Visual Basic のアクセス レベルを参照してください。

name
必須。 このモジュールの名前。 「宣言された要素名」を参照してください。

statements
任意。 このモジュールの変数、プロパティ、イベント、プロシージャ、および入れ子になった型を定義するステートメント。

End Module
Module定義を終了します。

注釈

Module ステートメントは、その名前空間全体で使用できる参照型を定義します。 モジュール (標準モジュールとも呼ばれます) はクラスに似ていますが、いくつかの重要な違いがあります。 すべてのモジュールにはインスタンスが 1 つだけ含まれており、変数を作成したり、変数に割り当てたりする必要はありません。 モジュールでは、継承をサポートしたり、インターフェイスを実装したりすることはできません。 モジュールがクラスまたは構造体であるという意味では ではないことに注意してください。モジュールのデータ型を持つプログラミング要素を宣言することはできません。

Moduleは名前空間レベルでのみ使用できます。 つまり、モジュールの 宣言コンテキスト はソース ファイルまたは名前空間である必要があり、クラス、構造体、モジュール、インターフェイス、プロシージャ、またはブロックにすることはできません。 別のモジュール内または任意の型内でモジュールを入れ子にすることはできません。 詳細については、「 宣言コンテキストと既定のアクセス レベル」を参照してください。

モジュールの有効期間は、プログラムと同じです。 メンバーはすべて Sharedであるため、プログラムの有効期間も同じです。

モジュールは既定で フレンド アクセスです。 アクセス修飾子を使用してアクセス レベルを調整できます。 詳細については、「 Visual Basic のアクセス レベル」を参照してください。

モジュールのすべてのメンバーは暗黙的に Shared

クラスとモジュール

これらの要素には多くの類似点がありますが、いくつかの重要な違いもあります。

  • 用語。 以前のバージョンの Visual Basic では、 クラス モジュール (.cls ファイル) と標準モジュール (.bas ファイル) の 2 種類 のモジュール が認識されます。 現在のバージョンでは、これらの クラスモジュールがそれぞれ呼び出されます。

  • 共有メンバー。 クラスのメンバーが共有メンバーかインスタンス メンバーかを制御できます。

  • オブジェクトの向き。 クラスはオブジェクト指向ですが、モジュールはオブジェクト指向ではありません。 そのため、クラスのみをオブジェクトとしてインスタンス化できます。 詳細については、「 オブジェクトとクラス」を参照してください。

準則

  • 修飾子。 すべてのモジュール メンバーは暗黙的に 共有されます。 メンバーを宣言するときに Shared キーワードを使用することはできません。また、メンバーの共有状態を変更することもできません。

  • 継承。 モジュールは、すべてのモジュールが継承する Object以外の型から継承することはできません。 具体的には、あるモジュールを別のモジュールから継承することはできません。

    Objectを指定する場合でも、モジュール定義で Inherits ステートメントを使用することはできません。

  • 既定のプロパティ。 モジュールで既定のプロパティを定義することはできません。 詳細については、「 既定値」を参照してください。

行動

  • アクセス レベル。 モジュール内では、各メンバーを独自のアクセス レベルで宣言できます。 モジュール メンバーは既定で パブリック アクセスに設定されます。ただし、変数と定数は除き、既定では プライベート アクセスになります。 モジュールのアクセスが、そのメンバーの 1 つよりも制限されている場合は、指定されたモジュール アクセス レベルが優先されます。

  • 範囲。 モジュールは名前空間全体のスコープ内にあります。

    すべてのモジュール メンバーのスコープは、モジュール全体です。 すべてのメンバーが 型の昇格を受けることに注意してください。これにより、モジュールを含む名前空間にスコープが昇格されます。 詳細については、「 型の昇格」を参照してください。

  • 資格。 1 つのプロジェクトに複数のモジュールを含め、同じ名前のメンバーを 2 つ以上のモジュールで宣言できます。 ただし、そのモジュールの外部からの参照である場合は、そのようなメンバーへの参照を適切なモジュール名で修飾する必要があります。 詳細については、「 宣言された要素への参照」を参照してください。

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

こちらも参照ください