在同一个类里面下面代码正常
private decimal CalculateCostOfBeveragePerPerson()
{
return 5.0m;
}
public decimal Cost
{
get
{
decimal totalCost =CalculateCostOfBeveragePerPerson();
return totalCost;
}
}
那为什么当CalculateCostOfBeveragePerPerson()这个私有的方法组在基类中,而 Cost属性在派生类中时,会显示错误:访问限制啊?该怎么解决?
private表示私有,私有的意思就是除了class自己之外,都无法访问,改为protect 应该就可以,表示在当前程序集都可以访问
private 私有权限,只有在本类中才能访问。至于protected 一楼说法有误,protected表示本类和它的派生类才可访问。
internal才是受限于当前程序集,也就是同一命名空间。
public 是对所有情况下都可以访问
C#和C++不同,只有一种继承方式,相当于C++的public继承。也就是基类中的private成员,在派生类中不可见。另外,在C# 1.0的时代,C#的继承方式相当于private继承,也就是可以看到基类private的成员。为什么C# 2.0修改了规则(并且延续至今)?据Anders本人说,是出于安全性的考虑。。。