Да уж. Ответили бы сначала человеку, а потом бы рассуждали. При чем тут Array?! При чем тут Map?!
Russland, Вы правильный пример нашли (я имеею ввиду форму AssetSum). Только смотрите, метод calc() - это метод класса AssetSum (точнее, одного из двух его наследников). И если в него посмотреть, то увидим:
X++:
void calc()
{
...
if (calculated)
{
return;
}
То есть, если метод calc() уже был однажды вызван, повторно рассчитывать значения он не будет. Собственно, в Вашем случае (1й пост), если метод calculate() рассчитывает три значения за один проход, добавьте флаг, и не выполняйте метод, если значения уже рассчитаны.