通过实例访问共享成员;将不计算限定表达式

更新:2007 年 11 月

使用了类或结构的实例变量来访问在该类或结构中定义的 Shared 变量、属性、过程或事件。如果使用实例变量来访问类或结构的隐式共享成员(如常数或枚举)或嵌套的类或结构,也会出现此警告。

共享某个成员的目的是为该成员创建一个单一副本,并将该单一副本提供给在其中声明成员的类或结构的每个实例使用。和此目的相一致的是:通过其类或结构的名称来访问 Shared 成员,而不是通过包含该类或结构的单独实例的变量来访问它。

如果通过实例变量访问 Shared 成员,那么,由于模糊了成员是 Shared 这一事实,您的代码将变得更难理解。而且,如果此类访问是执行其他操作的表达式(如返回共享成员实例的 Function 过程)的一部分,Visual Basic 将忽略表达式以及它会以另一种方式执行的任何其他操作。

有关更多信息及示例,请参见 Shared (Visual Basic)

默认情况下,此消息是一个警告。有关隐藏警告或将警告视为错误的更多信息,请参见在 Visual Basic 中配置警告

**错误 ID:**BC42025

更正此错误

  • 使用定义 Shared 成员的类或结构的名称来访问它。

  • 留心当两个编程元素具有相同名称时作用域效果。下面的示例声明了一个名称与在其中键入该变量的类相同的变量 testClass。编译器将对 sayHello() 的调用解释为通过类名 testClass 进行的访问,不会出现警告。

    Public Class testClass
        Public Shared Sub sayHello()
            MsgBox("Hello")
        End Sub
    End Class
    Module testModule
        Public Sub Main()
            Dim testClass As testClass = Nothing
            testClass.sayHello()
        End Sub
    End Module
    

请参见

概念

Visual Basic 中的范围

参考

Shared (Visual Basic)