这个问题已经在这里有一个答案:
- 为什么以及如何C#允许访问类本身之外的私有变量时,它是相同的含有类中? 3个回答
如果我有对象A,它有一个私有方法GetPrice()
也有同类型的“父”字段,为什么我能够调用GetPrice()
从子实例中的父实例?
例:
private decimal GetPrice()
{
ObjectA parent = Parent;
if(parent != null)
{
return parent.GetPrice(); // Why is this OK?
}
return 0;
}
因为私人的意思是“无法访问其他类型的 ”,而不是“没有其他实例访问”。
因为private
范围被限制在类 ,而不是如在定义的实例 C#规格 :
1.6.2可访问一个类的每一个成员具有相关联的可访问性,它控制其能够访问该成员的程序文本的区域。 有辅助功能的五种可能的形式。 这些总结如下表所示。
可访问性意义 公共接入不限 受保护的访问限制在这个类或类派生自此类 内部访问仅限于此程序 受保护的内部访问限于此程序或类派生自此类 限于此类私接
文章来源: Why can I call a private method of another instance of the same type outside of that instance? [duplicate]