ちょっとした背景情報として、ループで実行されているアプリケーションがあり、ティックごとにメソッド Tick を呼び出します。基本クラスを拡張し、すべて独自の tick メソッドを持ち、依存関係チェーンに追加されるクラスがたくさんあります。つまり、クラス A が呼び出され、そのチェーンに B と C のインスタンスが含まれている場合、B.Tick が呼び出されます。 、続いて C.Tick、最後に A.Tick です。
したがって、擬似コードでは、私のクラスは次のようになります。
public class A : Super
Super b;
Super c;
ArrayList one;
ArrayList two;
tick(){
one.Add(b.LastValue);
two.Add(c.LastValue);
... do something with one and two ...
}
A(){
b = new B(some other array list);
c = new C(ref one);
}
B は正常に機能しており、常に正しい値を取得します。問題は、クラス内の別の変数への参照を保存できないと思うので、 new C(ref one); を実行するときです。Cのコンストラクターはクラス変数を1に設定しています。後でAで1つが更新された後、Cがまだ1つを指しているはずであること(現在更新されている)をCが認識できなくなり、空になっているだけです(元のように)コンストラクター内にありました)。C# ポインターと安全でないコードを使用せずに、私がやろうとしていることを達成する方法についてのアイデアはありますか? ありがとう、うまくいけばそれは理にかなっています:)
編集:どうやら人々は、実際の質問とはまったく関係のない紛らわしい疑似コードで質問に答えることができないため、変更は次のように拡張されます:
編集2:Cクラス
...
ArrayList local;
...
C(ref ArrayList one){
local = one;
}
Tick(){
LastValue = local[0] + 5; //not actual formula, just shows trying to use a referenced variable
}