2 comeonbabe comeonbabe_ 于 2017.09.17 23:12 提问

c#继承问题啊啊啊啊啊

在同一个类里面下面代码正常
private decimal CalculateCostOfBeveragePerPerson()
{
return 5.0m;
}

    public decimal Cost
    {
        get
        {
            decimal totalCost =CalculateCostOfBeveragePerPerson();
            return totalCost;
        }
    }
            那为什么当CalculateCostOfBeveragePerPerson()这个私有的方法组在基类中,而 Cost属性在派生类中时,会显示错误:访问限制啊?该怎么解决?

3个回答

UnityFire
UnityFire   2017.09.18 09:29

private表示私有,私有的意思就是除了class自己之外,都无法访问,改为protect 应该就可以,表示在当前程序集都可以访问

zblyf
zblyf   2017.09.18 16:51

private 私有权限,只有在本类中才能访问。至于protected 一楼说法有误,protected表示本类和它的派生类才可访问。

internal才是受限于当前程序集,也就是同一命名空间。

public 是对所有情况下都可以访问

song8870
song8870   2017.09.20 14:18

C#和C++不同,只有一种继承方式,相当于C++的public继承。也就是基类中的private成员,在派生类中不可见。另外,在C# 1.0的时代,C#的继承方式相当于private继承,也就是可以看到基类private的成员。为什么C# 2.0修改了规则(并且延续至今)?据Anders本人说,是出于安全性的考虑。。。

Csdn user default icon
上传中...
上传图片
插入图片