使用其对象访问类的私有成员变量(实例)

时间:2008-12-06 09:24:48

标签: oop access-specifier

这是一个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链接中的这一行解释了这种行为 “声明私有元素的类型中的代码,包括包含类型中的代码,可以访问元素”

2 个答案:

答案 0 :(得分:3)

你的问题很混乱,但我认为我理解为: “为什么我可以访问另一个(我班级的)私有变量的实例?”

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

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

答案 1 :(得分:3)

以下是关于access levels in MSDN的部分。