这是一个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链接中的这一行解释了这种行为 “声明私有元素的类型中的代码,包括包含类型中的代码,可以访问元素”
答案 0 :(得分:3)
你的问题很混乱,但我认为我理解为: “为什么我可以访问另一个(我班级的)私有变量的实例?”
你是对的 - 在我使用的所有OOP语言中,你可以从其他实例访问私有变量,正是因为访问权限是基于代码所在的位置,而不是它所属的对象实例。 / p>
否则可能很难实现复制构造函数或相等运算符。
答案 1 :(得分:3)
以下是关于access levels in MSDN的部分。