У меня есть такой конструктор:
C(T x) : base(f(x))
{
...
do something with f(x)
...
}
f(x)
не отображается как член базового класса. Как избежать двойного вычисления f(x)
, если я не могу изменить базу C
?
Я имею в виду, что нет ни одного члена базы со значением f(x)
, к которому я мог бы получить прямой доступ. @DavidG все равно прибил его, я принимаю его ответ, как только таймер истечет.
Возможный дубликат Вычисление значений перед вызовом базового конструктора
Например, вы можете использовать два конструктора:
private C(WhateverFReturns x) : base(x)
{
//do something with x
}
public C(T x) : this(f(x))
{
}
Хорошая мысль!!
Что именно вы подразумеваете под «f (x) не отображается как член базового класса»?