为什么我可以在该实例之外调用另一个相同类型实例的私有方法?

时间:2012-11-02 13:10:42

标签: c# access-modifiers

如果我有ObjectA,并且它有一个私有方法GetPrice()并且还有一个相同类型的“父”字段,为什么我能够在父实例中调用GetPrice()儿童实例?

示例:

private decimal GetPrice()
{
    ObjectA parent = Parent;

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

    return 0;
}

3 个答案:

答案 0 :(得分:12)

因为私有表示“其他类型无法访问”,而不是“其他实例无法访问”。

答案 1 :(得分:6)

由于private范围仅限于,而不是C# spec中定义的实例

  

1.6.2可访问性   类的每个成员都有一个相关的可访问性,它可以控制   程序文本的区域,可以访问该成员。那里   有五种可能的可访问性形式。这些总结在   下表。

Accessibility       Meaning   

public              Access not limited   
protected           Access limited to this class or classes derived from this class  
internal            Access limited to this program   
protected internal  Access limited to this program or classes derived from this class    
private             Access limited to this class

答案 2 :(得分:1)

访问修饰符与它实现类/类型而不是与该类的实例相关