クラスまたは構造体のインスタンス変数は、そのクラスまたは構造体で定義 Shared 変数、プロパティ、プロシージャ、またはイベントにアクセスするために使用されます。 この警告は、インスタンス変数を使用して、クラスまたは構造体の暗黙的に共有されるメンバー (定数や列挙など)、または入れ子になったクラスまたは構造体にアクセスする場合にも発生する可能性があります。
メンバーを共有する目的は、そのメンバーのコピーを 1 つだけ作成し、そのメンバーが宣言されているクラスまたは構造体のすべてのインスタンスでその 1 つのコピーを使用できるようにすることです。 この目的は、そのクラスまたは構造体の個々のインスタンスを保持する変数ではなく、そのクラスまたは構造体の名前を使用して Shared メンバーにアクセスする目的と一致します。
インスタンス変数を介して Shared メンバーにアクセスすると、メンバーが Sharedであるという事実を隠すことで、コードを理解しにくくすることができます。 さらに、このようなアクセスが、共有メンバーのインスタンスを返す Function プロシージャなど、他のアクションを実行する式の一部である場合、Visual Basic は式と、それ以外の場合に実行するその他のアクションをバイパスします。
詳細と例については、「 共有」を参照してください。
既定では、このメッセージは警告です。 警告の非表示または警告をエラーとして扱う方法の詳細については、「 Visual Basic での警告の構成」を参照してください。
エラー ID: BC42025
例
次の例では bc42025 が生成されます。
Public Class TestClass
Public Shared Sub SayHello()
Console.WriteLine("Hello")
End Sub
End Class
Module Program
Public Sub Main()
Dim tc As New TestClass()
tc.SayHello() ' BC42025.
End Sub
End Module
この警告に対処するには
次の例に示すように、 Shared メンバーを定義するクラスまたは構造体の名前を使用してアクセスします。
Public Class TestClass
Public Shared Sub SayHello()
Console.WriteLine("Hello")
End Sub
End Class
Module Program
Public Sub Main()
TestClass.SayHello()
End Sub
End Module
注
2 つのプログラミング要素の名前が同じである場合は、スコープの影響に注意してください。 前の例では、 Dim testClass As TestClass = Nothingを使用してインスタンスを宣言した場合、コンパイラはクラス名を介したメソッドのアクセスとして testClass.SayHello() の呼び出しを処理し、警告は発生しません。
こちらも参照ください
.NET