私有静态和实例变量是否在C#中继承?为什么?

时间:2008-12-21 20:20:59

标签: c# inheritance

我已经读过,基类中的私有变量在技术上是由子类继承的,但是不可访问。

如果这是正确的,为什么我们说它们是继承的,大概只能通过反思来访问它们?

3 个答案:

答案 0 :(得分:11)

子类化是关于继承实现;和字段是一个实现细节。

这些字段确实存在,并且可以通过反射获得。但最终,通过任何公共/受保护/等成员管理这些字段的状态是基类工作。

但最终 - 如果基类声明属性Foo的属性(和字段),那么当您设置该属性时,数据必须到达某处。子类必须包含基类中的所有字段才有意义。这对于基于字段的序列化框架(例如BinaryFormatter)也很重要。

答案 1 :(得分:1)

私有字段在某种意义上是继承的,它们在分配时会占用堆上的空间。但是,派生类无法直接访问它们。

答案 2 :(得分:0)

  

为什么我们说他们是继承的......

就个人而言,我没有。我认为继承包括你可以在子类中访问的那些东西,而不是那些被隐藏的东西。

我可以看到有人说要明确继承包含链中的所有元素,但它让我觉得过于迂腐而且不是特别有用。