6

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

例子:

private decimal GetPrice()
{
    ObjectA parent = Parent;

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

    return 0;
}
4

3 回答 3

13

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

于 2012-11-02T13:15:49.870 回答
6

因为private范围仅限于,而不是C# 规范中定义的实例

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

可访问性含义   

公共访问不受限制   
protected 访问仅限于此类或从此类派生的类  
仅限此程序的内部访问   
受保护的内部访问仅限于该程序或从该类派生的类    
私人访问仅限于此类
于 2012-11-02T13:16:20.153 回答
1

访问修饰符与其实现的类/类型有关,而不是与该类的实例有关

于 2012-11-02T13:19:05.703 回答