我试图在一个类中使用一个私有声明的变量/对象,来自同一个类中的共享函数。
我的主要目标是能够访问类外的共享函数,而不是变量,因为它们是私有的。我不认为将所有变量/对象声明设置为“共享”将是一个优雅的解决方案。
以下是一个更好检查的片段:
Module main
Sub Main()
MsgBox(xTest.xMain)
End Sub
End Module
Class xTest
Private WC As New Net.WebClient()
Shared Function xMain() As String
Return WC.DownloadString("http://example.com")
End Function
End Class
当然,我该如何做到这一点。
答案 0 :(得分:2)
我怀疑你对Shared
的含义感到困惑。这与Private
/ Public
/ etc。
Shared
表示“特定于类型,而不是任何类型的实例”。您的Shared
函数无法使用WC
,因为它没有xTest
的实例来查找特定的WC
变量。想象一下,这是一个name
变量 - 就像问Person
课“你叫什么名字?”相反,每个人Person
实例都有一个名称。
你应该仔细考虑每个成员(无论是函数还是变量)是否逻辑Shared
。
有关详细信息,请参阅MSDN page on shared members - 尽管我不喜欢那里使用的描述。 “......由一个类的所有实例共享......”听起来首先必须有一个实例。没有 - 只是成员与类型本身相关联。即使没有创建类的实例,也可以使用共享变量。
(顺便说一句,我可能不会首先将WebClient
作为字段保留。WebClient
旨在创建,使用,然后丢弃。我也会建议更改您的名称以遵循.NET命名约定。)
答案 1 :(得分:1)
需要共享变量才能从共享功能访问。顺便说一下,根据你想要做的事情,我认为共享方法是不明智的。