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

Set the value in the parent class and access it in the derived class

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

我正在尝试通过检查“1”从派生 class 中检索父 class“1”中设置的值,但它总是 returns else 语句“3 ”。如何从 derived class 中访问这个值? . 欢迎任何有关如何纠正此问题的建议。

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;
            } 
        }
    } 

你有两个实例! 您必须在 Child

上调用 SetA
child.SetA = 1;

如前所述,您正在使用两个单独的对象,它们每个都有自己的 SetA 副本。

如果你想让他们分享它,你应该把它设为静态。然后,从父级派生的 class 的每个实例都将具有相同的值。

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