在父类中设置值并在派生类中访问它

时间:2017-02-02 22:22:12

标签: c# parent-child derived-class

这似乎是一个非常简单的例子,但我很困惑,我不能让这个工作。

我试图通过检查“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;
            } 
        }
    } 

3 个答案:

答案 0 :(得分:1)

你有两个实例! 你必须在孩子身上调用SetA

child.SetA = 1;

答案 1 :(得分:0)

正如已经指出的那样,你使用的是两个独立的对象,它们每个都有自己的SetA副本。

如果您希望他们共享它,您应该将其设置为静态。然后,从父级派生的类的每个实例都将绘制相同的值。

答案 2 :(得分:0)

您在parent对象上设置了A,而不是Parent类。 Child会继承Parent所拥有的所有内容,这意味着您可以使用child.SetA设置子项的值,因为Child具有SetA方法。您正在尝试更改类中的默认值,而不是您所执行的类实例上的值。