VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • 通过实例访问共享成员;将不计算限定表达式

更新:2010 年 12 月

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

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

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

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

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

**错误 ID:**BC42025

更正此错误

  • 使用定义 Shared 成员的类或结构的名称来访问它,如以下示例中所示。

    VB
    Public Class testClass
        Public Shared Sub sayHello()
            MsgBox("Hello")
        End Sub
    End Class
    
    Module testModule
        Public Sub Main()
            ' Access a shared method through an instance variable.
            ' This generates a warning.
            Dim tc As New testClass
            tc.sayHello()
    
            ' Access a shared method by using the class name.
            ' This does not generate a warning.
            testClass.sayHello()
        End Sub
    End Module
    

    Visual Basic 说明Visual Basic 说明

    留心当两个编程元素具有相同名称时作用域效果。 在上面的示例中,如果使用 Dim testClass as testClass = Nothing 声明实例,则编译器会将对 testClass.sayHello() 的调用视为通过类名访问方法,并且不会出现警告。

 

原文链接:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/y6t76186(v=vs.100)


相关教程