2016-11-14 10 views
1

VB.Netモジュールの「奇妙な」状況に陥っています。VB.NetのModuleは静的なクラスを意味するので、2つのヘルパーモジュールをそれぞれ2つの関数で実装しました両方FunctionA()FunctionB()は推奨オートコンプリートに表示されて、私は、Visual Studioでのコーディングを開始するとVB.Netモジュールの振る舞い

Namespace Helpers 
    Module HelperA 
     Public Function FunctionA() As Boolean 
      Return True 
     End Function 
    End Module 
End Namespace 

Namespace Helpers 
    Module HelperB 
     Public Function FunctionB() As Integer 
      Return 1 
     End Function 
    End Module 
End Namespace 

をしてHelpers.を入力します、(5月構文の問題が含まれている、フリーハンドコード)のより良い説明のための例をいくつか持ってみましょう私が入力していないダイアログHelperAまたはHelperBまだ静的なクラスを持つC#.NETプロジェクトがあり、そのような動作がC#には当てはまらないことがわかりました。ネット静的クラス。

私は現在、1つの名前空間で50-ishの機能を持っているため、いくつかのGoogleを行っていますが、何も見つけることができず、誰も解決策を提案できます(ModuleClass)検索するには?

助けてくださいありがとう!

答えて

2

Moduleは、静的クラスを意味するものではありません。 VB.netの静的(関数に関して)はSharedであり、Shared Classはありません。あなたが望むと思うのは、静的/共有関数を持つsealed/abstract/inheritableクラスです(親クラスのインスタンスなしで関数を呼び出すことはできますが、親クラスを参照する必要があります。関数を呼び出す)。その場合は、その後、次のような何かを:

Public NotInheritable Class HelperA 
    Public Shared Function FunctionA() as Boolean 
     Return True 
    End Function 
End Class 

は、実用的な目的-間の共有機能やモジュールの機能のために私が見つけ-できた少なくとも唯一の違いは、そのモジュールの機能である、と述べましたモジュールを参照せずに呼び出すことができます。

+0

ありがとうLopsided!あなたは私に多くの時間を救ってうれしい! –

+0

'Module'の'メソッド 'は'モジュール 'の親ネームスペースとモジュール自体の内部に現れます。これはVB6との構文互換性のために置かれました – SSS