C#私有/受保护成员的继承

时间:2011-01-30 18:01:51

标签: c# inheritance

有人在此说,如果会员受到保护,您可以访问它们: Are private members inherited in C#?

有人真的尝试过吗?

我试过它甚至不能用于保护:

public partial class Base
{
    protected IObject myObject;
}

如果我派生(Base在另一个命名空间中,但我当然导入该命名空间并不重要)

public partial class Derive: Base
{

}

Intellisense不会在Derive Class中显示myObject。

那么如果我需要在所有派生类中使用myObjhect成员来调用某些方法,我该怎么办?如果我必须复制该成员那么继承的用途是什么?

更新:我忘了Derive:Base但那只是mystypo,当然我做到了。

4 个答案:

答案 0 :(得分:2)

你没有衍生出来。要派生,您必须执行以下操作:

public class Base
{
    protected IObject myObject;
}

public class Derive : Base
{

}

myObject现已在Derive中提供。部分意味着您将类定义拆分为多个文件。

答案 1 :(得分:1)

您必须实际派生自Base类:

public partial class Derive : Base
{
}

答案 2 :(得分:1)

  

派生类可以访问   公共,受保护,内部和   保护基地的内部成员   类。即使是派生类   继承基础的私有成员   class,它无法访问这些成员。   但是,所有这些私人成员都是   仍存在于派生类中   他们可以做同样的工作   基类本身。例如,   假设一个受保护的基类   方法访问私有字段。那   字段必须存在于派生中   class为了继承的基础   类方法正常工作。

来自:http://msdn.microsoft.com/en-us/library/ms173149.aspx

检查this

答案 3 :(得分:0)

导出时是不是缺少基类?应该使用声明为protected的myObject。

public partial class Derive : Base
{

}