如何向C#解释使用继承财产而不是父财产?

如何向C#解释使用继承财产而不是父财产?,c#,class,variables,inheritance,C#,Class,Variables,Inheritance,我继承了我孩子班的财产。但当我试图调用parent方法时,它总是使用它自己的(parent)属性。我如何解释c#使用继承财产 class ParentClass { protected int autoinc; public ParentClass() { autoinc = 1000; } public Show() { Debug.Log("AutoInc = " + autoinc); } }

我继承了我孩子班的财产。但当我试图调用parent方法时,它总是使用它自己的(parent)属性。我如何解释c#使用继承财产

class ParentClass 
{
    protected int autoinc;

    public ParentClass()
    {
        autoinc = 1000;
    }

    public Show()
    {
        Debug.Log("AutoInc = " + autoinc);
    }

}

class ChildClass : ParentClass
{
    protected int autoinc;

    public ChildClass()
    {
        autoinc = 2000;
    }
}

/* Calling code */
ChildClass cc = new ChildClass();
cc.Show();

// I need above code to show 2000, but it shown 1000.

对不起,这绝对是个愚蠢的问题。但我还是需要您的帮助。

autoinc
子类中的字段隐藏父类中同名字段的声明。只需从子类中删除该字段:

class ChildClass : ParentClass
{
    public ChildClass()
    {
        autoinc = 2000;
    }
}

请记住,使用继承时,子对象就是父对象。您不需要在子对象中定义父字段或其他成员,因为它们都已经在这里了。除非要隐藏或重写父类的某些成员。

子类中的autoinc字段隐藏父类中同名字段的声明。只需从子类中删除该字段:

class ChildClass : ParentClass
{
    public ChildClass()
    {
        autoinc = 2000;
    }
}

请记住,使用继承时,子对象就是父对象。您不需要在子对象中定义父字段或其他成员,因为它们都已经在这里了。除非您想隐藏或重写父类的某些成员。

这两个都不是属性,而是字段。它们非常不同,你必须理解它们的不同。字段不能是虚拟的-
ParentClass。Show
将始终使用在
ParentClass
中声明的字段。但是为什么您试图声明两个具有不同值的字段,而不是在
ChildClass
构造函数中将
autoinc
的值设置为2000?VS应该显示一条警告,提示您应该使用
new
关键字。不管你想做什么,我建议你用不同的方式来做。@JonSkeet是的,看,我已经更改了代码,在2000年之前在子类中初始化autoinc。但无论如何它显示了1000。@Epsiloncol:不,您的代码仍然在
ChildClass
中声明一个单独的字段。删除该声明:您只需要一个字段。这两个字段都不是属性-它们都是字段。它们非常不同,你必须理解它们的不同。字段不能是虚拟的-
ParentClass。Show
将始终使用在
ParentClass
中声明的字段。但是为什么您试图声明两个具有不同值的字段,而不是在
ChildClass
构造函数中将
autoinc
的值设置为2000?VS应该显示一条警告,提示您应该使用
new
关键字。不管你想做什么,我建议你用不同的方式来做。@JonSkeet是的,看,我已经更改了代码,在2000年之前在子类中初始化autoinc。但无论如何它显示了1000。@Epsiloncol:不,您的代码仍然在
ChildClass
中声明一个单独的字段。删除该声明:您只需要一个字段。