【问题标题】:Are private static and instance variables inherited in C# and why?私有静态和实例变量是否在 C# 中继承,为什么?
【发布时间】:2008-12-21 20:20:59
【问题描述】:

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

如果这是正确的,为什么我们说它们是继承的,而假设它们只能通过反射来访问?

【问题讨论】:

    标签: c# inheritance


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        为什么我们说它们是遗传的……

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

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

        【讨论】:

        • 我提出这个问题是因为这是我上周在电话采访中被问到的一个问题,面试官说他们是继承的,这让我有点惊讶。
        猜你喜欢
        • 2014-10-28
        • 2012-12-03
        • 2012-02-08
        • 2016-09-10
        • 2012-05-16
        • 1970-01-01
        • 2011-03-23
        • 2012-04-11
        • 2017-02-07
        相关资源
        最近更新 更多