2016-12-04 6 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(); 
    } 
} 

ここでは、印刷は、私はそのように行うことができますが、私の基本クラスのChangeA()メソッドは、常に別の場所(他のサブクラス)で実行するので、私はこれを行うにはしたくない知っている、常に0です。

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

または

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

に等しい主な理由は何ですか?私はここで何が問題なのか分かりません。 – AgentFire

答えて

2

あなたはsub.ChangeA()メソッドを呼び出すために忘れてしまったように見える、それは「」 `ChangeA()`とアクセスも実行し、だから、0

関連する問題