C# 私有类级变量是继承的吗?

C# 私有类级变量是继承的吗?,c#,.net,C#,.net,只是想知道是否继承了私有类级别的变量?在C#中,是的,但它们是不可访问的,因此,仔细看,你可以诚实地说它们不是遗传的。是的,它们确实是这取决于语言,但一般来说,不是-它们只能在定义它们的类中访问。它们是继承的,但是关键字“private”意味着只有声明它们的类才能访问它们。这不包括子类。然而,因为子类的实例包含它自己的超类,所以它们仍然存在。你不能直接看到他们 如果您正在查找一个只有声明类及其子类才能看到的字段,您可以使用关键字“protected”而不是“private”,这应该可以提供您要查

只是想知道是否继承了私有类级别的变量?在C#

中,是的,但它们是不可访问的,因此,仔细看,你可以诚实地说它们不是遗传的。是的,它们确实是

这取决于语言,但一般来说,不是-它们只能在定义它们的类中访问。

它们是继承的,但是关键字“private”意味着只有声明它们的类才能访问它们。这不包括子类。然而,因为子类的实例包含它自己的超类,所以它们仍然存在。你不能直接看到他们


如果您正在查找一个只有声明类及其子类才能看到的字段,您可以使用关键字“protected”而不是“private”,这应该可以提供您要查找的功能。

它们是,尽管它们不能直接访问

public class BaseClass
{
    private const int _aNumber = 5;
    public int ReturnANumber() { return _aNumber; }
}

public class DClass : BaseClass
{
    public void SomeMethod()
    {
        // This is indirectly accessing a private implemented in the class
        // this derives from, but existing inside this class.
        int numbery = this.ReturnANumber();
    }
}

public class Whatever
{
    public void AMethod(DClass someDClass)
    {
        int thisIsNumberFive = someDClass.ReturnANumber();
    }
}

它们在某种意义上是遗传的。内存空间被分配给它们,它们“存在”在子类实例中。但是,子类不能访问变量本身。(如果希望子类访问基类变量,请使用
protected
而不是
private


这是必需的-基类中的方法需要能够设置私有变量(否则就没有用了)。这些方法也可以在子类的实例上使用——事实上,子类实例应该能够被视为基类的实例(需要满足以下条件)。如果未继承私有变量,则基类方法的行为将更改或中断。

是的,它们是继承的,但编译器禁止访问它们。Aalas,您仍然可以通过反射或您的漂亮的AMethod()技巧获得它们(不推荐)。

它们是继承的,但不可访问,或者只能在声明它们的类中访问。您可以通过两种方式在子类中访问它们

  • 声明它们是受保护的,而不是私有的

  • 编写一个公共方法,返回该私有变量的值

    但无法直接访问子类中的私有变量


  • 但它们通常是实例的一部分(即使语言阻止访问)