Для небольшого количества справочной информации у меня есть приложение, которое работает в цикле, и при любой отметке оно вызывает метод 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 работает нормально и всегда получает правильное значение. Проблема в том, что вы не можете сохранить ссылку на другую переменную в классе, поэтому, когда я делаю новый C (ссылка одна); и конструктор для C устанавливает переменную класса в единицу, позже после того, как одна обновляется в A, это похоже на то, что C больше не знает, что он все еще должен указывать на единицу (которая теперь обновлена) и просто пуст (как это было изначально был внутри конструктора). Любая идея о том, как добиться того, что я ищу, без использования указателей C # и небезопасного кода? Спасибо, надеюсь, это имеет смысл:)
Edit:
Очевидно, что люди не могут отвечать на вопросы с запутанным псевдокодом, который совершенно не связан с реальным вопросом, поэтому изменение распространяется на:
Редактировать 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
}