モジュールとはVB6以前のbasファイルのように、関数(メソッド)や変数など一連のソースコードをひとかたまりにしておくためのものです。

VB6以前ではbasファイル自体が一つのモジュールとなっていましたが、 VB.NETでは一つのファイルに一つ以上のモジュールを記述することができます。

Sponsored Link

モジュールの宣言

VB.NETでのモジュールは、VB6以前のようにファイル自体がモジュールとなるのではなく、Moduleキーワードを使って明示的に宣言する必要があります。

Module MainModule

    Sub Main()

        Console.WriteLine("Hello, world!")

    End Sub

End Module

これはもっとも基本的な「Hello, world!」プログラムですが、これがVB.NETプログラムの基本的な形でもあります。 ModuleキーワードからEnd Moduleキーワードまでがモジュールになり、同時に名前を与えることができます。 この場合のモジュールの名前は「MainModule」になっています。 モジュールは一つのvbファイルに複数記述できるので、次のようなコードも有効です。

Module MainModule

    .
    .

End Module

Module SubModule

    .
    .

End Module

モジュールという概念がわかりにくいのであれば、Module〜End Moduleを一つのbasファイルと見なして考えるのもいいかもしれません。

なお、一つのファイルでモジュール以外にも複数のクラス構造体を宣言することができます。

クラスとモジュールの比較

VB.NETではクラスも一つのファイルではなくClassキーワードを使って宣言することができます。 クラスについてはクラスで詳しく説明しますが、クラスから見たモジュールとの違いを簡潔にまとめておきます。

  • クラスはインスタンス化できるが、モジュールはできない。
  • クラスは継承することができるが、モジュールはできない。
  • クラスはインターフェイスを実装できるが、モジュールはできない。
  • クラスのメソッドは暗黙的にSharedではないが、モジュールは暗黙的にSharedである。

このように、モジュールは特殊なクラスととらえることもできます。

Main()プロシージャ

Main()プロシージャは特殊なプロシージャで、プログラムの開始点となるプロシージャです。 Main()プロシージャは一つのプログラムに必ず一つ記述する必要があります。 全く記述しなかったり、二つ以上記述することはできません。 ただ、VB.NETではフォームをアプリケーションのエントリーポイントに指定した場合はMain()プロシージャが存在しない場合もあります。

Main()プロシージャはモジュールだけでなく、共有メソッドとしてクラスで宣言することも可能です。 Main()プロシージャの形式についてはアプリケーションの種類とコンソールアプリケーションを参照してください。

New()プロシージャ

New()プロシージャも特殊なプロシージャで、これはVB.NETから採用されました。 すべてのモジュールはこのプロシージャを持つことができます。 New()プロシージャが記述されているモジュールでは、モジュールが読み込まれた時点でこのNew()プロシージャが実行されます。 次のコードでは、New()プロシージャでメッセージを初期化し、Main()プロシージャでそのメッセージを表示しています。

Module MainModule

    Dim message As String

    Sub New()

        message = "Hello, world!"

    End Sub

    Sub Main()

        Console.WriteLine(message)

    End Sub

End Module
実行結果
Hello, world!

New()プロシージャはクラスにおけるコンストラクタと同様の働きをします。