VB.NETのModuleとClassの違いをやさしく解説!

こんにちは!
今日は、VB.NETを使っていると必ず出会う「Module」と「Class」の違いについて、じっくりお話ししたいと思います。

最初のうちは、どっちも「コードを書く箱」みたいに見えますよね。
でも実は、この二つにはちゃんと役割の違いがあるんです。

この記事では、

  • VB.NETにおけるModuleClassの違い
  • ModuleとC#のstatic classって何が違うの?
  • VB.NETにはstatic classがあるの?

という3つのテーマで、わかりやすく整理していきます!


1. VB.NETのModuleとClassの違い

まずは一番基本的なところから、違いをまとめてみましょう。

項目ModuleClass
インスタンス化できないできる
メンバーの扱い全部自動でSharedになる必要に応じてSharedをつける
主な用途共通関数やヘルパー的な役割オブジェクトの設計図
継承できないできる

Moduleについて

  • Newして作るものではないです。
  • すべての関数や変数が自動的にShared(共有)扱いになります。
  • 共通で使いたい便利機能を書くのにピッタリです。

たとえば「文字列を整形する関数をいろんな場所で使いたい」とか、そういうときに向いています。

Classについて

  • Newしてインスタンスを作るための設計図です。
  • 特にSharedをつけなければ、作ったインスタンスごとに別々の状態を持てます。
  • データを持つエンティティとか、ビジネスロジックを表現するときに向いています。

簡単に言うと、「物を作る」ならClass、「道具を作る」ならModuleって感じですね!


2. VB.NETのModuleとC#のstatic classの違い

次に、「じゃあModuleって、C#のstatic classと同じなの?」って話です。

結論から言うと、

ほぼ同じだけど、完全にはイコールじゃない!

という感じです。

どちらも

  • インスタンスを作れない
  • 中のメンバーは全部自動的に共有(Shared/static)

という特徴を持っています。

じゃあ何が違うかというと、
VB.NETのModuleは、VB.NETという言語に特化してちょっとだけ特別扱いされている、という点です。

たとえば、呼び出し方が簡単になっていたり、エディタ(IDE)の補助が入っていたりします。

でも、ふつうにプログラムを書く上では、そこまで意識しなくてもOKです。
「Moduleは、C#のstatic classみたいなものだな〜」くらいの理解で大丈夫ですよ!


3. VB.NETにはstatic classがあるの?

これ、ちょっと気になりますよね。

答えはズバリ、

VB.NETにはC#のようなstatic classは存在しません!

です!

VB.NETのルール

  • VB.NETのClassには、static(静的クラス)という概念がそもそもないです。
  • 代わりに、必要なメンバーに個別にSharedをつけていきます。
  • ぜんぶSharedにしたいなら、そもそもModuleを使った方が早いです。

つまり、Classで無理やりstaticっぽいものを作ることはできるけど、ちょっと面倒くさいんですね。

たとえばこんな感じ👇

Public Class UtilityClass
    Private Sub New()
        ' インスタンス作成を禁止
    End Sub

    Public Shared Sub SayHello()
        Console.WriteLine("Hello")
    End Sub
End Class

この例では、Newを禁止するためにコンストラクタをPrivateにしています。
そして、メソッドにはSharedをつけています。

でも、これって結構手間ですよね…。
だったら最初から素直にModuleを使った方がシンプルです!


まとめ

今日は、VB.NETにおける

  • ModuleとClassの違い
  • ModuleとC#のstatic classの違い
  • VB.NETにstatic classがない理由

についてお話しました!

ポイントはこれだけです。

  • 全体で共通して使う道具的なものはModule
  • 個々に状態を持つオブジェクトを作るならClass
  • staticクラスがない代わりにModuleが便利に使える!

VB.NETは、C#とは似ているけどちょっと独特なルールを持っている言語です。
こうした違いを知っておくと、プログラムがもっとスッキリ書けるようになりますよ!

というわけで、ぜひ今日の内容を参考に、楽しいVB.NETライフを送ってくださいね!