BC42025:通过实例访问共享成员、常量成员、枚举成员或嵌套类型;将不计算限定表达式

类或结构的实例变量用于访问该类或结构中定义的 Shared 变量、属性、过程或事件。 如果实例变量用于访问类或结构的隐式共享成员(如常量或枚举)或嵌套类或结构,则也可能发生此警告。

共享成员的目的是仅创建该成员的单一副本,并且使该单个副本可用于声明该成员的任何类或结构实例。 通过成员类或结构的名称(而不是通过保存该类或结构的单个实例的变量)访问成员 Shared 与此目的一致。

通过实例变量访问 Shared 成员可能会模糊显示成员为 Shared 这一事实,使代码更难理解。 此外,如果此类访问是执行其他操作(如返回共享成员实例的 Function 过程)的表达式的一部分,则 Visual Basic 将绕过该表达式及其将执行的其他任何操作。

有关详细信息及示例,请参阅共享

默认情况下,此消息是一个警告。 有关隐藏警告或将警告视为错误的详细信息,请参阅 Configuring Warnings in 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

注意

当两个编程元素具有相同的名称时,对范围的影响发出警报。 在上一示例中,如果使用 Dim testClass As TestClass = Nothing 声明实例,则编译器将对 testClass.SayHello() 的调用视为通过类名臣访问方法,并且不会发生警告。

请参阅