如何在类中的共享函数中使用私有声明?

时间:2012-12-04 07:16:27

标签: .net vb.net class shared private-members

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

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

以下是一个更好检查的片段:

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

当然,我该如何做到这一点。

2 个答案:

答案 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)

需要共享变量才能从共享功能访问。顺便说一下,根据你想要做的事情,我认为共享方法是不明智的。