VB.NET での実装に困惑していますStatic
。C# では、静的クラスと静的メソッドを作成して、アプリケーションのユーティリティ メソッドを記述できます。
現在、VB.NET ではModule
静的クラスの代わりに作成できます。モジュール内にメソッドを作成すると、デフォルトで静的になります。ただし、私のアプリケーションでは、以下のコードを記述しました。
Public Class Utility
Public Shared Function GetValue() As String
// My code
End Function
End Class
コードを書くことで、ユーティリティメソッドにアクセスできますUtility.GetValue()
。これは静的クラスではないので、そのオブジェクトをインスタンス化する必要があります。しかし、このメソッドはクラスとオブジェクトの両方で使用できます。Utility
私の質問は次のとおりです。
- 私が行った実装は、モジュールが提供する静的クラスの機能のいずれかに違反する可能性がありますか?
- これと代わりにモジュールを実装することの違いは何でしょうか?
- 代わりにモジュールを作成した場合、そのスコープはこのクラスと同じになりますか? プロジェクト全体と、このメソッドが参照されている他のプロジェクトからメソッドにアクセスしたいと考えています。
複数の記事を参照してみましたが、どこにも正確な答えが見つかりませんでした。助けてください。
ベストアンサー1
VB.NET モジュールは静的クラス。コンパイラがこれを処理します。そのクラスのすべてのメソッドとプロパティはstatic
( Shared
) です。
静的 (Shared) メンバーを持つクラスは、まさに静的 (Shared) メンバーを持つクラスです。静的 (Shared) メソッドにアクセスするためにそのクラスのインスタンスを作成する必要はありませんが、そのインスタンス メンバーにアクセスするにはインスタンスを作成する必要があります。
モジュール内でを定義することもできますSub New()
。これはモジュールの静的コンストラクターになります。モジュールでメンバーを初めて呼び出そうとすると、静的コンストラクターが呼び出され、静的クラスが初期化されます。