2016-12-04 45 views
1

当我这样做,输出总是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(); 
} 
+4

因此,执行'ChangeA()'和访问它的主要原因是什么?我不明白这里有什么问题。 – AgentFire

回答

2

您似乎忘记调用sub.ChangeA()方法,这就是为什么“一个”等于0

相关问题