2009-08-06 42 views
4

私は過去6年間、C#でプログラミングを行っていましたが、現在はVB.netに慣れています。Visual Basicモジュールvシングルトン

私が作業しているコードベースは、いくつかのモジュールを使用しています。私にとって、モジュールはシングルトンのように見えます。存在するのは1つだけです。名前空間内のどこでも呼び出すことができます。

ここに何か不足していますか? VBは、シングルトンが構造化されている通常の方法(プライベートコンストラクタ/パブリックインスタンスフィールド)をサポートしていませんか?

答えて

6

モジュールはシングルトンではありません。 C#の静的クラスに似ています。コードを逆コンパイルすると、構造が非常に似ていることがわかります(モジュールには余分な属性があります)。

C#の静的クラスとVB.Netモジュール間の主な違いは...

  • は、モジュール内のメソッドへのスタティック/共有修飾子を追加する必要はありませんされています。これらはデフォルトで共有されており、これを変更することはできません
  • モジュールがインポートされた名前空間にある場合、そのメソッドはすべて修飾されずに使用できます。
  • C#で静的クラスは、一般的なことができ、モジュール(彼らは一般的なメンバーを持つことができますが)できない
+0

基本的に、モジュールを使用すると、静的(C#で必要とされる)内部のすべてを宣言するのが好きです。 これとシングルトンの違いは、シングルトンが継承(派生クラスまたはインターフェイス)と多態性をサポートしていることです。私はちょうどそれをすべて並べ替えることです。 @Joel、種類の。 –

+0

。モジュールについて覚えておくべき重要なことは、インスタンスが存在しないことです。フードの下では、静的メソッドのセット(C#静的クラスと同じように)にコンパイルされます。最大の違いは、含まれているモジュールが利用可能な場合、グローバル名スコープに追加されることです。 – JaredPar

3

私は間違っていない場合は、VBのモジュールは、静的クラスと同じものです。

+1

2の間に微妙な違いがありますが、高いレベルでは同じですが、同じです。 – JaredPar