为什么我可以调用另一个同类型的实例的私有方法的实例之外? [重复](Why can I call

2019-07-03 12:18发布

这个问题已经在这里有一个答案:

  • 为什么以及如何C#允许访问类本身之外的私有变量时,它是相同的含有类中? 3个回答

如果我有对象A,它有一个私有方法GetPrice()也有同类型的“父”字段,为什么我能够调用GetPrice()从子实例中的父实例?

例:

private decimal GetPrice()
{
    ObjectA parent = Parent;

    if(parent != null)
    {
        return parent.GetPrice(); // Why is this OK?
    }

    return 0;
}

Answer 1:

因为私人的意思是“无法访问其他类型的 ”,而不是“没有其他实例访问”。



Answer 2:

因为private范围被限制在 ,而不是如在定义的实例 C#规格 :

1.6.2可访问一个类的每一个成员具有相关联的可访问性,它控制其能够访问该成员的程序文本的区域。 有辅助功能的五种可能的形式。 这些总结如下表所示。

  可访问性意义      公共接入不限     受保护的访问限制在这个类或类派生自此类    内部访问仅限于此程序     受保护的内部访问限于此程序或类派生自此类      限于此类私接 


Answer 3:

访问修饰符是与它没有实现的类/类型,该类的实例



文章来源: Why can I call a private method of another instance of the same type outside of that instance? [duplicate]