这似乎是一个非常简单的例子,但我很困惑,我不能让这个工作。
我试图通过检查“1”从派生类中检索父类“1”中设置的值,但它总是返回else语句“3”。如何从派生类中访问此值? 。 任何有关如何纠正此问题的建议都将受到欢迎。
class Program
{
static void Main(string[] args)
{
Parent parent = new Parent();
Child child = new Child();
parent.SetA = 1;
double test = child.GetA();
Console.WriteLine(test);
}
}
class Parent
{
protected int A;
public int SetA
{
get { return A; }
set { A = value; }
}
}
class Child : Parent
{
public int GetA()
{
if (A == 1)
{
return 2;
}
else
{
return 3;
}
}
}
答案 0 :(得分:1)
你有两个实例! 你必须在孩子身上调用SetA
child.SetA = 1;
答案 1 :(得分:0)
正如已经指出的那样,你使用的是两个独立的对象,它们每个都有自己的SetA副本。
如果您希望他们共享它,您应该将其设置为静态。然后,从父级派生的类的每个实例都将绘制相同的值。
答案 2 :(得分:0)
您在parent
对象上设置了A,而不是Parent
类。 Child
会继承Parent
所拥有的所有内容,这意味着您可以使用child.SetA
设置子项的值,因为Child
具有SetA
方法。您正在尝试更改类中的默认值,而不是您所执行的类实例上的值。