通过实例访问共享成员;将不计算限定表达式
更新: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