0

我试图在一个类中使用一个私有声明的变量/对象,来自同一个类中的一个共享函数。

我的主要目标是能够访问类之外的共享函数,但不能访问变量,因为它们是私有的。我不认为将所有变量/对象声明设置为“共享”将是一个优雅的解决方案。

这是一个更好的检查片段:

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

当然,我将如何正确地做到这一点。

4

2 回答 2

2

我怀疑您对 的含义感到困惑Shared。这与Private/ Public/etc 正交。

Shared意思是“特定于类型,而不是类型的任何实例”。您的Shared函数无法使用WC,因为它没有用于查找特定变量的实例。想象一下它是一个变量——就像问一个班级“你叫什么名字?” 相反,每个单独的实例都有一个名称。xTestWCnamePersonPerson

您应该仔细考虑每个成员(无论是函数还是变量)是否符合逻辑Shared

有关更多详细信息,请参阅有关共享成员的 MSDN 页面- 尽管我不喜欢那里使用的描述。“......由类的所有实例共享......”听起来首先必须有一个实例。没有 - 只是成员与类型本身相关联。即使没有创建类的实例,也可以使用共享变量。

(顺便说一句,我可能一开始就不会保留 aWebClient作为字段。WebClient旨在创建、使用然后丢弃。我还建议更改您的名称以遵循 .NET 命名约定。)

于 2012-12-04T07:21:04.177 回答
1

变量需要共享才能从共享函数访问。顺便说一句,对于您正在尝试做的事情,我认为共享方法是不明智的。

于 2012-12-04T07:19:50.550 回答