1

这是一个 VB.NET 代码片段

Public Class OOPDemo

    Private _strtString as String

    Public Function Func(obj as OOPDemo) as boolean
      obj._strString = "I can set value to private member using a object"

    End Function

End Class

我认为我们不能使用对象访问私有成员,但也许 CLR 允许我们这样做。这意味着访问修饰符基于类型而不是该类型的实例。我还听说c ++也允许这样做..

任何猜测可能是什么原因?

编辑:

我认为 RoBorg 给出的 msdn 链接中的这一行解释了这种行为“声明私有元素的类型中的代码,包括包含类型中的代码,可以访问该元素”

4

2 回答 2

3

您的问题很令人困惑,但我认为我已经将其理解为:“为什么我可以访问另一个实例(我的类)的私有变量?”

你是对的 - 在我使用过的所有 OOP 语言中,你可以从其他实例访问私有变量,正是因为访问权限基于代码所在的位置,而不是它“属于”哪个对象实例。

否则可能很难实现复制构造函数或相等运算符。

于 2008-12-06T09:34:20.467 回答
3

这是MSDN 中有关访问级别的部分。

于 2008-12-06T09:41:07.990 回答