.net 通过示例访问共享成员、常量成员、枚举成员或嵌套类型

ix0qys7i  于 2023-06-25  发布在  .NET
关注(0)|答案(2)|浏览(132)

我想知道为什么Visual Studio会发出这个警告:
通过示例访问共享成员、常量成员、枚举成员或嵌套类型
我的代码:

Dim a As ApplicationDeployment = deployment.Application.ApplicationDeployment.CurrentDeployment

If System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed Then
    If a.IsNetworkDeployed Then
        ' do something   
    End If
End If

什么意思是“通过示例”?为什么这是一个“警告”?

sr4lhrrt

sr4lhrrt1#

显示警告是一个设计选项。在C#中,当使用instance(this)关键字调用static时,它会抛出错误。
问题是你应该调用对象来正确描述它是什么。
更多有用的信息请访问MSDN
通过示例变量访问Shared成员会模糊成员是Shared的事实,从而使代码更难理解。
(...)

更正此错误

  • 使用定义Shared成员的类或结构的名称来访问它,如下例所示。
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
mbyulnm0

mbyulnm02#

Zanor的答案是正确的,但我不确定OP是否修复了它的代码。这将像这样固定:

If System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed Then
    If deployment.Application.ApplicationDeployment.CurrentDeployment.IsNetworkDeployed Then
        ' do something   
    End If
End If

IsNetworkDeployed是一个Shared示例,这就是消息所抱怨的。如果你不示例化一个对象来引用它,那么警告就会消失。
是的,这是近四年的历史,但我刚刚在我的代码中遇到了类似的东西,并担心错误消息的额外部分:
将不计算限定表达式。
它似乎在撒谎;我的共享示例执行一个计算,传递的参数确实在计算中使用,无论我是否在示例中使用共享函数。

相关问题