2011-01-12 23 views
1

私の同僚の何人かは、VB.netのモジュール概念を大いに利用しています。残念ながら、私はちょうどそれを得ることはありません。私は、共有クラスよりもモジュールを使うことに何の利益も見ません。何か不足していますか?いつモジュールを使うのが望ましいでしょうか?それとも、私は(私がこの言葉でしばしばしているように)「それを得ていない」のですか?vb.netモジュールを使用することをお勧めします

+1

VB.Netでクラスを共有として宣言することはできません。モジュールは、メンバーと関数が共有されているクラス、プライベートコンストラクター、アプリケーションの開始から終了までのインスタンスが1つのみ存在するクラスとかなり同等です。 –

答えて

2

VB.netでは、モジュールは共有クラスです。コンパイル時には、privateコンストラクタが与えられ、メソッドは共有に設定されます。

VB.Netクラスでは作成できない拡張メソッドなどのように、コンパイラでモジュールを強制的に使用する(静的クラスがC#にあるのと同じ方法で)場合があります。

ヘルパーメソッドのモジュールを使用すると、後で拡張メソッドに変換しやすくなり、他のインスタンスメソッドやコンストラクタの追加を制限することができます。

VB6のハングオーバーであり、完全なOOプログラミングをサポートしていないし、スタンドアロンのヘルパーメソッドを超えて広く使われていないと言われています。

+0

完全に同意します。モジュールを使用する唯一の時間は、拡張メソッドを作成する必要があるときです。静的クラスを作成する必要がある場合は、静的メソッドと専用コンストラクタを使用して通常のクラスを作成します。私はモジュールがVB.NetにVB6プロジェクトをアップグレードするのに役立つだけだと確信しています。そのため、REMと同じだと考えています。 –

+0

@Chris:モジュールが何らかの形で置き換えられたり、廃止されたり不要になったり、冗長化されていたりすると、REMのようにモジュールの使用が少なくなってしまいます。その代わりに、モジュールは拡張メソッドを実行するために*必須*です。なぜなら、モジュールは言語によって定義された他のコード単位で満たされていない特定のニッチをVB.netに埋め込むためです。あなたは 'Public Shared Class Foo'と言うことができるときには本当に冗長になりますが、それでもちょうど(醜い)セマンティクスです - モジュールと静的クラスは同じことをします。 IMOモジュールとクラス*は、まったく異なる目的を持っているため、異なる宣言をする必要があります。 – cHao

+0

「静的クラス」は、「モジュール」の概念を持たない言語からは醜いと言いたいと思います。 。 – cHao

1

モジュールは基本的に共有クラスと同じです。主な違いは、モジュールでは、すべての余分な "共有"が必要なく、すべてが暗黙的に共有されるからです。インスタンスデータがなく、そのクラスを関数の名前空間の一種として使用しているだけの場合は、代わりにモジュールを使用してそれを明確にするのが良いアイデア(IMO)です。

関連する問題