如果我有 ObjectA,它有一个私有方法GetPrice()
并且还有一个相同类型的“父”字段,为什么我可以GetPrice()
从子实例中调用父实例?
例子:
private decimal GetPrice()
{
ObjectA parent = Parent;
if(parent != null)
{
return parent.GetPrice(); // Why is this OK?
}
return 0;
}
如果我有 ObjectA,它有一个私有方法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 可访问性 类的每个成员都有一个关联的可访问性,它控制能够访问该成员的程序文本区域。有五种可能的可访问性形式。这些总结在下表中。
可访问性含义 公共访问不受限制 protected 访问仅限于此类或从此类派生的类 仅限此程序的内部访问 受保护的内部访问仅限于该程序或从该类派生的类 私人访问仅限于此类
访问修饰符与其实现的类/类型有关,而不是与该类的实例有关