繁体   English   中英

在这种情况下,如何从基类中获取正确的值?

[英]How can I get the correct value from base class on this kind of situation?

当我这样做时,输出始终为0,我知道这是预期的行为。 但是我真的很奇怪,是否有任何方法可以访问派生类上更改的值? 像反射之类的东西...

public class BaseClass
{
   protected int a=0;

   public void ChangeA()
   {
       a=5;
   }
}

public class SubClass : BaseClass
{
   public void PrintValue()
   {
       Console.Write(a);
   }
}

谢谢...

编辑:我注意到我必须提供有关此问题的更多详细信息。

public class MainClass
{
    public static void Program()
    {
         BaseClass baseC = new BaseClass();
         baseC.ChangeA();

         SubClass sub = new SubClass();
         sub.PrintValue();
    }
}

在这里,打印始终为0。我知道我可以这样做,但是我不想这样做,因为我的基类的ChangeA()方法始终在不同的位置(其他子类)运行;

public class MainClass
{
     public static void Program()
     {
         SubClass sub = new SubClass();
         sub.ChangeA();
         sub.PrintValue();
     }
}

要么

public void PrintValue()
{
    base.ChangeA();
    Console.Write();
}

看起来您忘了调用sub.ChangeA()方法,这就是“ a”等于0的主要原因

一切正常。 检查它: https : //dotnetfiddle.net/7viIiS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM