C# 私有类级变量是继承的吗?
只是想知道是否继承了私有类级别的变量?在C#中,是的,但它们是不可访问的,因此,仔细看,你可以诚实地说它们不是遗传的。是的,它们确实是这取决于语言,但一般来说,不是-它们只能在定义它们的类中访问。它们是继承的,但是关键字“private”意味着只有声明它们的类才能访问它们。这不包括子类。然而,因为子类的实例包含它自己的超类,所以它们仍然存在。你不能直接看到他们C# 私有类级变量是继承的吗?,c#,.net,C#,.net,只是想知道是否继承了私有类级别的变量?在C#中,是的,但它们是不可访问的,因此,仔细看,你可以诚实地说它们不是遗传的。是的,它们确实是这取决于语言,但一般来说,不是-它们只能在定义它们的类中访问。它们是继承的,但是关键字“private”意味着只有声明它们的类才能访问它们。这不包括子类。然而,因为子类的实例包含它自己的超类,所以它们仍然存在。你不能直接看到他们 如果您正在查找一个只有声明类及其子类才能看到的字段,您可以使用关键字“protected”而不是“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()技巧获得它们(不推荐)。它们是继承的,但不可访问,或者只能在声明它们的类中访问。您可以通过两种方式在子类中访问它们
但它们通常是实例的一部分(即使语言阻止访问)